JavaWeb——数据库操作之JDBC API

JavaWeb——数据库操作

二、JDBC API

  • JDBC 提供了许多用于操作数据库的类和接口,也就是我们通常所说的 API。主要有 Connection 接口、DriverManager 类、Statement 接口、PreparedStatement 接口 和 ResultSet 接口。

1、Connection 接口

  • Connection 接口位于 java.sql 包中,通过该接口可以获得与特定数据库连接的连接对象,使用该接口返回的特定数据库连接对象,便可以操作数据库。
  • Connection 接口提供以下常用方法用于操作数据库:
    方法 功能
    close() 立即释放 Connection 对象的数据库连接占用的 JDBC 资源,通常在完成所要进行的数据库操作之后调用此方法,如果有 ResultSet 接口对象的话,应当先调用 ResultSet 接口的 close() 方法再调用 Connection 的这个 close() 方法,也就是说链接对象的释放要在最后
    commit() 提交事务,并释放 Connection 对象当前持有的所有数据库锁,通常在事务设置为手动提交时,才需要调用该方法
    createStatement() 创建一个 Statement 对象来将 SQL 语句提交给数据库,返回值为 Statement
    getAutoCommit() 用于判断 Connection 对象是否设置为自动提交模式,返回值为 Boolean
    getMetaData() 获取 Connection 对象所连接的数据库的元数据 DatabaseMetaData 对象,元数据包括关于数据库的表、受支持的 SQL 语法、存储过程、此连接功能等信息
    getTransactionIsolation() 获取 Connection 对象当前事务隔离级别
    isClosed() 判断 Connection 对象是否与数据库断开连接,返回布尔值。
    isReadOnly() 判断 Connection 对象是否为只读模式,返回布尔值
    prepareStatement(String sql) 将参数化的 SQL 语句预编译并存储在 PreparedStatement 对象中,并返回所创建的这个 PreparedStatement 对象
    releaseSavepoint(Savepoint savepoint) 从当前事务中移除指定的 Savepoint 和后续 Savepoint 对象
    rollback() 回滚事务,并释放 Connection 对象当前持有的所有数据库锁,该方法用于手动提交事务模式的 Connection 对象
    rollback(Savepoint savepoint) 回滚事务,针对 Savepoint 对象之后的更改
    setAutoCommit() 设置 Connection 对象的自动提交模式,true 为自动提交模式,false 为手动提交模式
    setReadOnly(boolean readOnly) 设置 Connection 对象为只读模式
    setSavepoint() 在当前事务中创建一个未命名的保留点,并返回这个保留点对象
    setSavePoint(String name) 在当前事务中创建一个指定名称的保留点,并返回这个保留点对象
    setTransactionIsolation(int level) 设置 Connection 对象的事务隔离级别
  • 以上的这些 Connection 对象提供的方法都会抛出 SQLException。

2、DriverManager 类

  • DriverManager 类主要作用在用户和驱动程序之间,是 JDBC 中的管理层,管理数据库厂商提供的驱动程序,并建立应用程序和数据库之间的连接。
  • 其常用方法如下表:
    方法 说明
    dereisterDriver(Driver driver) 从 DriverManager 的管理列表中删除指定的驱动程序
    getConnection(String url) 根据指定的 URL,建立与数据库的连接,并创建一个 Connection 对象并返回该 Connection 对象,以下都类似
    getConnection(String url, Propertries info) 根据指定的 URL 及数据库连接属性信息建立数据库连接 Connection
    getConnection(String url, String user, String password ) 根据指定的 URL、user 和 password 连接数据库,这是表较常用的一个连接数据库的方法
    getDrivers() 获取当前 DriverManager 中已加载的所有驱动程序,返回值为一个 Enumeration
    registerDriver(Driver driver) 向 DriverManager 注册一个指定的驱动程序
  • 以上方法除了 getDrivers,其余方法都会抛出 SQLException 异常。

3、Statement 接口

  • Statement 接口封装了执行语句和获取查询结果的基本方法,其常用方法如下:
    方法 作用
    addBatch(String sql) 将 SQL 语句添加到 Statement 对象的当前命令列表中,该方法用于 SQL 命令的批处理
    clearBatch() 清空 Statement 对象中的命令列表
    close() 立即释放 Statement 对象的数据库和 JDBC 资源,而不是等待该对象自动关闭时发生此操作
    execute(String sql) 执行指定的 SQL 语句,如果该 SQL 语句返回结果,该方法返回 true,否则返回 false
    executeBatch() 将一批 SQL 命令提交给数据库执行,返回更新计数组成的数组
    executeQuery(String sql) 执行查询(select)类型的 SQL 语句,该方法返回查询结果所获取的结果集 ResultSet 对象
    executeUpdate(String sql) 执行 SQL 语句中的 DML 类型(insert、update、delete)的 SQL 语句,返回更新所影响的行数
    getConnection() 获取生成 Statement 对象的 Connection 对象
    isClosed() 判断 Statement 对象是否已经关闭,如果关闭,则不能再调用该 Statement 对象执行 SQL 语句,该方法返回布尔值
  • 以上方法都会抛出 SQLException。

4、PreparedStatement 接口

  • PreparedStatement 接口主要是为了弥补 Statement 对象对带有参数的 SQL 语句执行的不方便而设计的,因此 PreparedStatement 接口在继承 Statement 接口中所用的方法的同时,针对带参数的 SQL 语句的执行操作进行了拓展;应用于 PreparedStatement 接口中的 SQL 语句,可以使用占位符“?”来代替 SQL 语句中的参数,然会再赋值。
  • PreparedStatement 接口中的常用方法如下:
    方法 功能
    setBinaryStream(int parameterIndex,InputStream x) 将输入流 x 作为 SQL 语句中的参数值,parameterIndex 为参数位置的索引
    setBoolean(int parameterIndex,boolean x) 将布尔值 x 作为 SQL 语句中的参数值,parameterIndex 为参数位置的索引
    setByte(int parameterIndex,byte x) 将 byte 值 x 作为 SQL 语句中的参数值,parameterIndex 为参数位置的索引
    setDate(int parameterIndex, Date x) 将 java.sql.Date 值 x 作为 SQL 语句中的参数值,parameterIndex 为参数位置的索引
    setDouble(int parameterIndex, double x) 将 double 值 x 作为 SQL 语句中的参数值,parameterIndex 为参数位置的索引
    setFloat(int parameterIndex, float x) 将 float 值 x 作为 SQL 语句中的参数值,parameterIndex 为参数位置的索引
    setInt(int parameterIndex, int x) 将 int 值 x 作为 SQL 语句中的参数值,parameterIndex 为参数位置的索引
    setInt(int parameterIndex, long x) 将 long 值 x 作为 SQL 语句中的参数值,parameterIndex 为参数位置的索引
    setObject(int parameterIndex, Object x) 将 Object 值 x 作为 SQL 语句中的参数值,parameterIndex 为参数位置的索引
    setShort(int parameterIndex, short x) 将 short 值 x 作为 SQL 语句中的参数值,parameterIndex 为参数位置的索引
    setString(int parameterIndex, String x) 将 String 值 x 作为 SQL 语句中的参数值,parameterIndex 为参数位置的索引
    setTimestamp(int parameterIndex, Timestamp x) 将 Timestamp 值 x 作为 SQL 语句中的参数值,parameterIndex 为参数位置的索引
  • 以上方法仍然会抛出 SQLException。
  • 实际开发中,最好使用 PreparedStatement 接口向 SQL 语句传递参数,因为不仅效率高,而且可以避免 SQL 语句的注入式攻击。

5、ResultSet 接口

  • ResultSet,一如其名,是一个结果集,一个查询式 SQL 语句执行所返回的结果集,ResuSet 接口提供了以下常用方法:
    方法 功能
    absloute(int row) 将光标移动到 ResultSet 对象的给定编号,row 为行编号
    afterLast() 将光标移动到 ResuSet 对象的最后一行之后,入股结果集中不包含任何行,该方法无效
    beforeFirst() 立即释放 ResuSet 对象的数据库和 JDBC 资源
    deleteRow() 从 ResuSet 对象和底层数据库中删除当前行
    first() 将光标移动到 ResuSet 对象的第一行
    getBinaryStream(String columnLabel) 以 byte 流的形式获取 ResuSet 对象当前行中指定列的值,参数 columnLabel 为列名称
    getDate(String columnLabel) 以 java.sql.Date 的形式获取 ResuSet 对象当前行中指定列的值,参数 columnLabel 为列名称
    getDouble(String columnLabel) 以 double 的形式获取 ResuSet 对象当前行中指定列的值,参数 columnLabel 为列名称
    getFloat(String columnLabel) 以 float 的形式获取 ResuSet 对象当前行中指定列的值,参数 columnLabel 为列名称
    getInt(String columnLabel) 以 int 的形式获取 ResuSet 对象当前行中指定列的值,参数 columnLabel 为列名称
    getString(String columnLabel) 以 String 的形式获取 ResuSet 对象当前行中指定列的值,参数 columnLabel 为列名称
    isClosed() 判断当前 ResultSet 对象是否已经关闭
    last() 将光标移动到 ResultSet 对象的最后一行
    next() 将光标位置向后移动一行,如果移动的新行有效则返回 true,否则返回 false
    previous() 将光标位置向前移动一行,如果移动的新行有效则返回 true,否则返回 false

上一篇

下一篇

发布了146 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42896653/article/details/103322315