JDBC介绍
Java Database Connectivity(简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口。
JDBC的本质
JDBC是SUN公司制定的一套连接数据库的接口(interface)。而接口都有调用者(程序员)和实现者(各大数据库厂商),这些面向接口调用。面向接口写实现类的操作,都属于面向接口编程思想。
面向接口编程是一种非常受益的思想,java的多态机制就是个典型范例(面向抽象编程)。
第一步:注册驱动
作用是告知java程序即将要连接的数据库厂商品牌(MySQL、Oracle、SQLserver)。
第二步:获取连接
打开JVM进程与数据库进程之间的通道,属于进程间通信,重量级。
第三步:获取数据库操作对象
专门执行SQL语句的对象。
第四步:执行SQL语句(DQL、DML)
第五步:处理查询结果
只有当第四步执行的是select语句时,才会处理查询后的结果集。
第六步:释放资源
使用完毕,一定要及时关闭连接。
数据驱动jar包,各种mysql-connector-java版本下载地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java
注意:mysql8和mysql5的导入包路径不同。
mysql5:com.mysql.jdbc.Driver
mysql8:com.mysql.cj.jdbc.Driver
我这里用的是mysql-connector-java-8.0.22.jar,下面IDEA演示操作:
1、添加jar包至library库中。
我事先在项目中创建了名为jdbc_test模块。
(1)选择File-》Project Structure
(2)选择Libraries-》点击‘+’号-》Java
(3)选择下载好的mysql驱动,点击OK
(4)选择jdbc_test模块,点击OK
最后别忘了Apply和OK,这样成功添加进来了。
2、连接代码测试示例:
public class JDBCTest01 {
public static void main(String[] args) throws SQLException {
Connection conn = null;
Statement stmt = null;
// 1、注册驱动
Driver driver = new com.mysql.cj.jdbc.Driver();
DriverManager.registerDriver(driver);
// 2、获取连接
String url = "jdbc:mysql://127.0.0.1:3306/bookstore?serverTimezone=UTC";
String user = "root";
String password = "xxx"; // 自己的数据库密码
conn = DriverManager.getConnection(url, user, password);
System.out.println("数据库连接对象:" + conn);
// com.mysql.cj.jdbc.ConnectionImpl@3dd3bcd
// 3、获取数据库操作对象
// Statement createStatement() 创建一个 Statement 对象来将 SQL 语句发送到数据库。
stmt = conn.createStatement();
// 4、执行sql语句
// int executeUpdate(String sql)
// 专门执行DML语句,返回值是“影响数据库中的记录条数”
// int count = stmt.executeUpdate("update dept set dname = '销售部',loc = '合肥' where deptno = 20;");
int count = stmt.executeUpdate("update users set username= 'mike' where id=13;");
System.out.println(count == 1 ? "保存成功":"保存失败");
// 5、处理查询结果集
// 6、释放资源
// 从小到大,从后往前依次关闭
try {
stmt.close();
}
catch (SQLException e) {
e.printStackTrace();
}
if(conn != null) {
try {
conn.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
}
}
如果启动报时区错误的话,在你连接数据库的url后加上参数 ?serverTimezone=UTC。
3、执行结果: