JDBC 中常用的类和接口
在 Java 语言中提供了丰富的类和接口用于数据库编程,利用这些类和接口可以方便的进行数据访问和处理。
Collection 接口
Collection 接口代表与特定的数据库的连接,在连接上下文中执行 SQL 语句并返回结果。Collection 接口的常用方法如表:
方 法 | 功 能 描 述 |
---|---|
createStatement() | 创建 Statement 对象 |
createStatement(int resultSetType, int resultSetConcurrency) | 创建一个 Statement 对象,该对象将生成具有给定类型、并发性和可保存性的 ResultSet 对象 |
preparedStatement() | 创建预处理对象 prepareStatement |
isReadOnly() | 查看当前 Connection 对象的读取模式是否为只读形式 |
setReadOnly() | 设置当前 Connection 对象的读写模式,默认是非只读模式 |
commit() | 使所有上一次提交 / 回滚后进行的更改为持久更改,并释放此 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 对象 |
clearBatch() | 清空此 Statement 对象的当前 SQL 命令列表 |
executeBatch() | 将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。数组元素的排序与 SQL 语句的添加顺序对应 |
addBatch(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() 方法可以建立连接,则经连接返回,否则抛出 SQLException 异常。DriverManager 类的常用方法如表:
方 法 | 功 能 描 述 |
---|---|
getConnection(String url, String user, String password) | 指定 3 个入口参数(依次是连接数据库的 URL、用户名、密码)来获取与数据库的连接 |
setLoginTimeout() | 获取驱动程序试图登录到某一数据库时可以等待的最长时间,以秒为单位 |
println(String message) | 将一条消息打印到当前 JDBC 日志流中 |
ResultSet 接口
ResultSet 接口类似于一个临时表,用来暂时存放数据库查询操作所获得的结果集。ResultSet 实例具有指向当前数据行的指针,指针开始的位置在第一条记录的前面,通过 next() 方法可将指针向下移。
在 JDBC 2.0(JDK 1.2) 之后,该接口添加了一组更新方法 updateXXX(),该方法有两个重载方法,可根据列的索引号和列的名称来更新指定列。但该方法并没有将对数据进行的操作同步到数据库中,需要执行 updateRow() 或 insertRow() 方法更新数据库。ResultSet 接口的常用方法如表:
方 法 | 功 能 描 述 |
---|---|
getInt() | 以 int 形式获取此 ResultSet 对象的当前行的指定列值。如果列值是 NULL,则返回值是 0 |
getFloat() | 以 float 形式获取此 ResultSet 对象的当前行的指定列值。如果列值是 NULL,则返回值是 0 |
getDate() | 以 date 形式获取此 ResultSet 对象的当前行的指定列值。如果列值是 NULL,则返回值是 0 |
getBoolean() | 以 Boolean 形式获取此 ResultSet 对象的当前行的指定列值。如果列值是 NULL,则返回值是 0 |
getString() | 以 String 形式获取此 ResultSet 对象的当前行的指定列值。如果列值是 NULL,则返回值是 0 |
getObject() | 以 Object 形式获取此 ResultSet 对象的当前行的指定列值。如果列值是 NULL,则返回值是 0 |
first() | 将指针移动到当前记录的第一行 |
last() | 将指针移动到当前记录的最后一行 |
next() | 将指针向下移一行 |
beforeFirst() | 将指针移到集合的开头(第一行位置) |
afterLast() | 将指针移到集合的尾部(最后一行位置) |
absolute(int index) | 将指针移到 ResultSet 给定编号的行 |
isFirst() | 判断指针是否位于当前 ResultSet 集合的第一行。如果是返回 true,否则返回 false |
isLast() | 判断指针是否位于当前 ResultSet 集合的最后一行。如果是返回 true,否则返回 false |
updateInt() | 用 int 值更新指定列 |
updateFloat() | 用 float 值更新指定列 |
updateLong() | 用指定的 long 值更新指定列 |
updateString() | 用指定的 String 值更新指定列 |
updateObject() | 用 Object 值更新指定列 |
updateNull() | 将指定的列修改为 NULL |
updateDate() | 用指定的 date 值更新指定列 |
updateDouble() | 用指定的 double 值更新指定列 |
getrow() | 查看当前的索引号 |
insertRow() | 将插入行的内容插入到数据库 |
updateRow() | 将当前行的内容同步到数据表 |
deleteRow() | 删除当前行,但并不同步到数据库中,而是在执行 close() 方法后同步到数据库 |