JDBC概述
JDBC是一种可用于执行SQL语句的Java API(Application Porgramming Interface,应用程序接口),是连接数据库和Java应用程序的纽带。
JDBC的全称是Java DataBase Connectivity,是一套面向对象的应用程序接口指定了统一的访问各种关系型数据库的标准接口。
在Java语言中提供了丰富的类和接口用于数据库的编程,利用这些类和接口可以方便的进行数据访问和处理,本节将介绍一些常用的JDBC接口和类,这些类和接口都在java.sql包中。
Connection 接口
Connection 接口代表与特定的数据库的连接,在连接上下文中执行SQL语句并返回结果。
Connection 接口的常用方法:
方法 | 功能描述 |
---|---|
createStatement() | 创建Statement对象 |
createStatement(int resultSetType, int resultSetConcurrency) | 创建一个Statement对象,该对象将生成具有给定类型,并发性和可保存性的ResultSet对象 |
preparedStatement() | 创建预处理对象preparedStatement |
isReadOnly() | 查看当前Connection 对象的读取模式是否为只读形式 |
setReadOnly() | 设置当前Connection 对象的读写模式,默认是非只读模式 |
commit() | 使所有上一次提交/回滚后进行更改成为持久更改,并释放此Connection 对象当前持有的所有数据库锁 |
roolback() | 取消当前事务中进行的所有更改,并释放此Connection 对象当前持有的所有数据库锁 |
close() | 立即释放此Connection 对象的数据库和JDBC资源,而不是等待他们被自动释放 |
Statement 接口
Statement 接口用于在已经建立连接的基础上向数据库发送SQL语句。在JDBC中有3种Statement 对象,分别是Statement ,PreparedStatement 和 CallableStatement。Statement 对象用于执行不带参数的简单SQL语句,PreparedStatement 继承了 Statement ,用来执行动态的SQL语句,CallableStatement 继承了 PreparedStatement ,用于执行对数据库的储存过程的调用。
Statement 接口中的常用方法:
方法 | 功能描述 |
---|---|
execute(String sql) | 执行静态的SELECT语句,该语句可能返回多个结果集 |
executeQuery(String sql) | 执行给定的SQL语句,该语句返回单个ResultSet对象 |
clearBarch() | 清空此Statement 对象的当前SQL命令列表 |
executeBarch() | 将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组,数组元素的排序与SQL语句的添加顺序对应 |
addBarch(String sql) | 将给定的SQL命令添加到此Statement 对象的当前命令列表中。如果驱动程序不支持批量处理将抛出异常 |
close() | 释放Statement 实例占用的数据库和JDBC资源 |
PreparedStatement 接口
PreparedStatement 接口是用来动态执行SQL语句。通过 PreparedStatement 实例执行的SQL语句,将被编译并保存到 PreparedStatement 实例中,从而可以反复的执行该SQL语句。
PreparedStatement 接口的常用方法:
方法 | 功能描述 |
---|---|
setInt(int index , int k) | 将指定位置的参数设置为int值 |
setFloat(int index , float f) | 将指定位置的参数设置为float值 |
setLong(int index , long l) | 将指定位置的参数设置为long值 |
setDouble(int index , double d) | 将指定位置的参数设置为double值 |
setBoolean(int index , boolean b) | 将指定位置的参数设置为boolean 值 |
setDate(int index , date date) | 将指定位置的参数设置为date值 |
executeQuery() | 在此 PreparedStatement 对象中执行SQL查询,并返回该查询生成的 ResultSet 对象 |
setString(int index , String s ) | 将指定位置的参数设置为对应的String值 |
setNull(int index , intsqlType) | 将指定位置的参数设置为SQL NULL |
executeUpdate() | 执行前面包含的参数的动态INSERT,UPDATE 或 DELETE 语句 |
clearParameters() | 清除当前所有参数的值 |
DriverManager 类
DriverManager 类用来管理数据库中的所有驱动程序。他是JDBC的管理层,作用于用户和驱动程序之间,跟踪可用的驱动程序,并在数据库的驱动程序之间建立连接。如果通过 getConnection() 方法可以建立连接则经连接返回,否则抛出异常。
DriverManager 类的常用方法:
方法 | 功能描述 |
---|---|
getConnection(String url, String user ,String password) | 指定3个入口参数(依次是连接数据库的url,用户名,密码)来获取与数据库的连接 |
setLoginTimeout() | 获取驱动程序试图登入到某一数据库时可以等待的最长时间,以秒为单位 |
println(String message) | 将一条消息打印到当前JDBC日志流中 |
ResultSet 接口
ResultSet 接口类似于一个临时表,用来暂时存放数据库查询操作所获得的结果集。ResultSet 实例具有指向当前数据行的指针,指针开始的位置在第一条记录的前面,通过next()方法可将指针向下移动。
ResultSet 接口的常用方法:
方法 | 功能描述 |
---|---|
geInt() | 以int形式获取此ResultSet 对象当前行的指定列值。如果列值是NULL,则返回0 |
getFloat() | 以float形式获取此ResultSet 对象当前行的指定列值。如果列值是NULL,则返回0 |
getDate() | 以data形式获取此ResultSet 对象当前行的指定列值。如果列值是NULL,则返回null |
getBoolean() | 以boolean形式获取此ResultSet 对象当前行的指定列值。如果列值是NULL,则返回null |
getString() | 以String形式获取此ResultSet 对象当前行的指定列值。如果列值是NULL,则返回null |
getObject() | 以Object形式获取此ResultSet 对象当前行的指定列值。如果列值是NULL,则返回null |
first() | 将指针移到当前记录的第一行 |
last() | 将指针移到当前记录的最后一行 |
next() | 将指针向下移一行 |
beforeFirst() | 将指针移到集合的开头(第一行位置) |
afterLast() | 将指针移到集合的尾部(最后一行位置) |
absolute(int index) | 将指针移到ResultSet 给定编号的行 |
isFrist() | 判断指针是否位于当前ResultSet 集合的第一行。如果是返回true,否则返回false |
isLast() | 判断指针是否位于当前ResultSet 集合的最后一行。如果是返回true,否则返回false |
updateInt() | 用int值更新指定列 |
updateFloat() | 用float值更新指定列 |
updatelLong() | 用指定的long值更新指定列 |
updateString() | 用指定的String值更新指定列 |
updateObject() | 用Object值更新指定列 |
updateNull() | 将指定的列值修改为NULL |
updateDate() | 用指定的date值更新指定列 |
updateDouble() | 用指定的double值更新指定列 |
getrow() | 查看当前行的索引号 |
insertRow() | 将插入行的内容插入到数据库 |
updateRow() | 将当前行的内容同步到数据库 |
deleteRow() | 删除当前行,但并不同步到数据库中,而是在执行close()方法后同步到数据库 |