连接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语句有误,改正了就可以了!!!!