JDBC基础知识
什么是JDBC?
JDBC就是 java database Connector java与数据库的连接器,就是一套接口,是Java代码与数据库的桥梁.
重要的接口和类:
Java.sql.Connection(连接接口,代表了Java代码与数据库服务器之间的连接).
Java.sql.Statment(语句接口,代表了语句对象,可以用来执行各种sql语句).
Java.sql.ResultSet(结果集接口,代表查询的结果).
DriverManager(驱动管理器)辅助类,获取Connection连接.
Java.sql.Driver(驱动接口).
java.sql.SQLException 检查异常,需要处理.
JDBC的实现需要各个数据库厂商提供.
JDBC的开发步骤:
1.加载驱动
Class.forNanme("驱动类名");
2.创建数据库连接:
Connection conn=DricerManager.getConnection(连接字符串,用户名,密码);
3,创建Statment(Preparedstatment)对象
Statment stmt=conn.createStatment();
执行增删改:
int rows=exeuteUpdate(sql语句);
执行查询:
ResultSet rs =executeQuery(sql语句);
4.关闭资源
新增示例代码:
public static void insert() throws Exception{
// 1. 加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 2. 创建数据库连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test3?serverTimezone=GMT%2B8&useSSL=false", "root" "root");
// 3. 创建Statment对象,执行sql
Statement stmt = conn.createStatement();
// 返回值 int类型 代表影响的记录行数
String sql = "insert into student(sid,sname,birthday,sex) values (null,'老炮儿','1999-1-1','男')";
int x = stmt.executeUpdate(sql);
System.out.println("影响的记录行数 x = " + x);
// 4. 关闭资源 先打开的后关闭
stmt.close(); // 关闭statement对象
conn.close(); // 关闭数据库连接
}
查询示例代码:
public static void select() throws Exception {
// 1. 加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 2. 创建数据库连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test3?serverTimezone=GMT%2B8&useSSL=false", "root" "root");
// 3. 创建Statment对象,执行sql
Statement stmt = conn.createStatement();
// executeQuery(sql) 执行sql的方法
// 返回值ResultSet类型 代表影响的结果集
String sql = "select sid,sname,birthday,sex from student";
ResultSet rs = stmt.executeQuery(sql);
// next()方法用来移动到下一行记录 getXXX方法用来获取某列数据
while (rs.next()) {
int sid = rs.getInt(1);
String sname = rs.getString(2);
Date birthday = rs.getDate(3);
String sex = rs.getString(4);
System.out.println(sid + " " + sname + " " + birthday + " " + sex);
}
// 4. 关闭资源 先打开的后关闭
rs.close(); // 关闭ResultSet
stmt.close(); // 关闭Statement对象
conn.close(); // 关闭数据库连接
}
注意:
MySQL Connector/J 8.0.12 驱动连接时需要添加`serverTimezone=GMT%2B8`参数,否则会出现异常:java.sql.SQLException:
The server time zone value 'Öйú±ê׼ʱ¼ä',另外`GMT%2B8`也必须加,否则会出现连接方和数据库时区不一致问题.
在连接过程中一旦发生异常:java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed 需要添加`allowPublicKeyRetrieval=true`参数,此异常一种可能的发生情况是MySQL服务重启后,立刻用jdbc连接时.
WARN: Establishing SSL connection without server's identity verification is not recommended 要消除这个警告信息,需要加入参数
`useSSL=false`.
获取自增列的值:
Statement stmt = conn.createStatement();
String sql = "insert into student(sid,sname,birthday,sex) values (null,'老炮儿','1999-1-1','男')";
stmt.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);
ResultSet rs = stmt.getGeneratedKeys();
rs.next();
System.out.println(rs.getInt(1));