Java为关系数据库定义了一套标准的访问接口:JDBC(Java Database Connectivity)。
JDBC简介
把某个数据库实现了JDBC接口的jar包称为JDBC驱动。
添加一个Maven依赖:
1 | <dependency> |
注意:添加依赖的scope
是runtime
,因为编译Java程序并不需要MySQL的这个jar包,只有在运行期才需要使用。
1 | -- 创建数据库learjdbc: |
JDBC连接
要获取数据库连接,使用如下代码:
1 | // JDBC连接的URL, 不同数据库有不同的格式: |
核心代码是DriverManager
提供的静态方法getConnection()
。DriverManager
会自动扫描classpath,找到所有的JDBC驱动,然后根据我们传入的URL自动挑选一个合适的驱动。
因为JDBC连接是一种昂贵的资源,所以使用后要及时释放。使用try (resource)
来自动释放JDBC连接是一个好方法:
1 | try (Connection conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD)) { |
JDBC查询
获取到JDBC连接后,下一步我们就可以查询数据库了。查询数据库分以下几步:
第一步,通过Connection
提供的createStatement()
方法创建一个Statement
对象,用于执行一个查询;
第二步,执行Statement
对象提供的executeQuery("SELECT * FROM students")
并传入SQL语句,执行查询并获得返回的结果集,使用ResultSet
来引用这个结果集;
第三步,反复调用ResultSet
的next()
方法并读取每一行结果。
完整查询代码如下:
1 | try (Connection conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD) { |
插入INSERT
1 | try (Connection conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD) { |
更新UPDATE
1 | try (Connection conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD) { |
删除DELETE
1 | try (Connection conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD) { |
JDBC事务
数据库事务(Transaction)是由若干个SQL语句构成的一个操作序列,有点类似于Java的synchronized
同步。数据库系统保证在一个事务中的所有SQL要么全部执行成功,要么全部不执行,即数据库事务具有ACID特性:
- Atomicity:原子性
- Consistency:一致性
- Isolation:隔离性
- Durability:持久性
JDBC Batch
JDBC连接池
发布时间: 2020-03-06
最后更新: 2020-03-06
本文链接: https://juoyo.github.io/posts/fe6c277a.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!