本人使用BAE环境是java7+tomcat7,并且使用的是BAE的拓展服务中的mysql
昨日开始尝试通过官方文档的例子连接BAE的mysql数据库
官方连接示例:
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
Connection connection = null;
Statement stmt = null;
ResultSet rs = null;
String sql = null;
try {
/***** 填写数据库相关信息(请查找数据库详情页) *****/
String databaseName = "你自己的数据库名";
String host = "sqld.duapp.com";
String port = "4050";
String username = "你的Access Key ID"; // 用户AK
String password = "你的Secret Key ID"; // 用户SK
String driverName = "com.mysql.jdbc.Driver";
String dbUrl = "jdbc:mysql://";
String serverName = host + ":" + port + "/";
String connName = dbUrl + serverName + databaseName;
/****** 接着连接并选择数据库名为databaseName的服务器 ******/
Class.forName(driverName);
connection = DriverManager.getConnection(connName,
username, password);
stmt = connection.createStatement();
/****** 至此连接已完全建立,就可对当前数据库进行相应的操作了 *****/
/****** 接下来就可以使用其它标准mysql函数操作进行数据库操作 *****/
// 创建一个数据库表
sql = "create table if not exists test_mysql("
+ "id int primary key auto_increment,"
+ "no int, " + "name varchar(1024),"
+ "key idx_no(no))";
stmt.execute(sql);
} catch (Exception e) {
System.out.println(resp.getWriter().toString());
e.printStackTrace(resp.getWriter());
}
}
但是执行总是一直出现如下错误:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
之前在网上看到的BAE环境中内置了mysql驱动,所以就没有自己添加驱动!但是这个错误告诉我们BAE环境并没有内置mysql驱动,必须要自己添加
于是我就添加了一个5.1.7版本的驱动,结果有出错了
Protocol Packet Invalid:驱动包错误
感觉这个就有点扯了,文档里明明说了下面这句话:
支持各语言原生的SDK访问数据库。
而且并没有看到有说需要哪个版本的mysql驱动
最后好不容易查到需要mysql-connector-java-5.1.18 版本的驱动,这才一举解决问题!
另外建议上官网下载该版本或者从我的CSDN资源里下载,因为我第一次在网上找的该版本并没有成功!
祝各位好运!