JDBC学习总结
1. 快速入门
步骤:
- 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar
- 复制mysql-connector-java-5.1.37-bin.jar到项目的libs目录下
- 右键–>Add As Library
此处发生了一些问题,在运行时出现了以下错误提示
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
报错原因
mysql驱动版本与mysql数据库不一致;
解决方案
下载版本相同的mysql驱动
-
注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
-
获取数据库连接对象 Connection
DriverManager.getConnection("jdbc:mysql://localhost:3306/db", "用户名", "密码")
编译时此处又发生错误
InvalidConnectionAttributeException: The server time zone value ''Öйú±ê׼ʱ¼ä' is unrecognized
报错原因
java6之后在创建链接对象时要设置时区
解决方案
在url参数字符串后添加时区信息
出现警告Establishing SSL connection without server‘s identity verification is not recommende的解决方案 -
定义sql
此处定义字符串String str
接收SQL语句 -
获取执行sql语句的对象 Statement
Connection.CreateStatement()
-
执行sql,接受返回结果
Statement.ExcuteQuery(str) //查询语句执行,返回结果集ResultSet rs
Statement.ExcuteUpdate(str) //更新语句执行,返回int
-
处理结果
结果集遍历方法
while(rs.next()){rs.getXXX("列名") }
-
释放资源
if not null, 调用close
注意在try catch代码块之外声明各种需要被释放的资源对象
2. 自定义Utils工具类抽取
我们在书写代码的时候发现,每次操作数据库时都有大量重复的代码,我们可以将这些重复的抽取出来,写入自定义的JDBCUtils工具类的静态方法中,简化代码复用的问题
2.1. Properties集合类
我们注意到一行关键代码:DriverManager.getConnection("jdbc:mysql://localhost:3306/db?serverTimezone=GMT&characterEncoding=utf-8&useSSL=false", "用户名", "密码")</