连接bae的云数据库,太不容易了,老是报一些,随机的错误啊。同一段代码,报了好几种错误,而且MySQL的jar包明明就在lib,居然给我报找不到合适的驱动,十分之坑爹啊!要不是学生党么,我一定租用一个自己的服务器,省得这么麻烦!抱怨这么多。废话少说,现在就来说一下,如何正确连接bae 的MySQL数据,千万不要想象官网上的办法。
最简单,最有效的,就是文档里注释了的第一种了。而且,
官方文档有这种一句话:“MySQL使用标准的jdbc访问,Java BAE中提供的版本为mysql-connector-java-5.1.18。Java BAE环境中已内置了MySQL驱动,应用中无需包含。“
但是我在我的项目里放置了MySQL的jar包了,测试了报错提示找不到合适的jdbc 驱动,然后被文档里的这句话误导。怀疑是jar冲突了。把项目里的jar删除了,再测试依然不行!百度不靠谱啊!突然又抱怨了这么久,足见我被坑惨了。好吧,不多说了,见代码!记得用mysql-connector-java-5.1.18版本的!
private static SqlManager manager = null; // 静态成员变量,支持单态模式
private static String driverName = null; // JDBC驱动类型
private String connName = null; // 连接字符串
private Connection conn = null; // 连接对象
private PreparedStatement pstm = null;
private CallableStatement cstm = null;
String databaseName = "";
/**
* 私有构造函数,不可实例化
*
* @throws IOException
*/
private SqlManager() throws IOException
{
connName = "jdbc:mysql://sqld.duapp.com:4050/your database name";
driverName = "com.mysql.jdbc.Driver";
}
/**
* 单态模式获取实例
*
* @return SqlManager对象
* @throws IOException
* @throws ClassNotFoundException
*/
public static SqlManager createInstance() throws IOException, ClassNotFoundException
{
if (manager == null)
{
manager = new SqlManager();
manager.initDB();
}
return manager;
}
/**
* 初始化连接参数
*
* @throws ClassNotFoundException
*/
public void initDB() throws ClassNotFoundException
{
Class.forName(driverName);
}
/**
* 连接数据库
*
* @throws SQLException
*/
public void connectDB() throws SQLException
{
conn = DriverManager.getConnection(connName, "your api key", "your secret key"); // 获取连接
conn.setAutoCommit(false); // 设置自动提交为false
}
/**
* 断开数据库
*
* @throws SQLException
*/
public void closeDB() throws SQLException
{
if (pstm != null)
{
pstm.close();
}
if (cstm != null)
{
cstm.close();
}
if (conn != null)
{
conn.close();
}
}
好吧,我连接上了依然还是报错!最最关键的一步是:上传完war包以后记得重启执行单元,再测试!
后来的后来,我才发现,其实就是sql语句有误,改正了就可以了!!!!