百度bae的免费mysql数据库,java连接时一直报错:Protocol Packet Invalid(包非法)。
自己在项目里添加了一个mysql驱动,版本5.1.20;
尝试许久都没成功,请教各位大大应该怎么连接?
谢谢啦!!!!!!!!!^_^
以下是我使用的连接代码:
public class JdbcUtil {
private static String dbUrl = "jdbc:mysql://";
public static String port="";
public static String host="";
public static String username="";
public static String password="";
public static String databaseName = "HBxAWlyvCohiFPjHjsKx";
private JdbcUtil() {
}
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}catch(Exception e1){
e1.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
// 从InitFilter类获取失败,手动填写参数
if (host==null) {
host="sqld.duapp.com";
port="4050";
username="XXXX";
password="XXXX";
}
String conName = dbUrl + host + ":" + port + "/" + databaseName;
return DriverManager.getConnection(conName,username,password);
}
拦截请求获取连接参数:
public class InitFilter implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)req;
JdbcUtil.host = request.getHeader("BAE_ENV_ADDR_SQL_IP");
JdbcUtil.port =request.getHeader("BAE_ENV_ADDR_SQL_PORT");
JdbcUtil.username = request.getHeader("BAE_ENV_AK");
JdbcUtil.password = request.getHeader("BAE_ENV_SK");
chain.doFilter(request, resp);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}