企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
JDBC常用类和接口都在`java.sql`包中。 <br/> **1. java.sql.Connection** ```java //作用:与数据库建立连接 public interface Connection extends Wrapper, AutoCloseable { //创建Statement对象 Statement createStatement() throws SQLException; //创建预处理对象PrepareStatement PreparedStatement prepareStatement(String sql) throws SQLException; //是否自动提交事物 void setAutoCommit(boolean autoCommit) throws SQLException; boolean getAutoCommit() throws SQLException; //使所有上一次提交/回滚后进行的更改为持久更改,并释放此Connection对象当前持有的所有数据库锁。 void commit() throws SQLException; //取消在当前事务中进行的所有更改,并释放此Connection对象当前持有的所有数据库锁。 void rollback() throws SQLException; //立即释放此Connection对象的数据库和JDBC资源,而不是等待它们被自动释放。 void close() throws SQLException; boolean isClosed() throws SQLException; //设置当前Connection对象的读写模式,默认为非只读模式 void setReadOnly(boolean readOnly) throws SQLException; //查看当前Connection对象的读取模式是否为只读形式 boolean isReadOnly() throws SQLException; //创建预处理对象PrepareStatement PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) throws SQLException; ... } ``` **2. java.sql.Statement** ```java //作用:用于在建立连接的基础上向数据库发送SQL语句 public interface Statement extends Wrapper, AutoCloseable { //执行给定的SQL语句,该语句返回单个ResultSet对象 ResultSet executeQuery(String sql) throws SQLException; int executeUpdate(String sql) throws SQLException; //立即释放此Statement对象的数据库和JDBC资源,而不是等待它们被自动释放 void close() throws SQLException; //执行静态的select语句,该语句可能返回多个结果集 boolean execute(String sql) throws SQLException; //将给定的SQL命令添加到此Statement对象的当前命令列表中, //如果驱动程序不支持批量处理,将抛出异常。 void addBatch( String sql ) throws SQLException; //清空此Statement对象当前的SQL命令列表 void clearBatch() throws SQLException; //将一批命令提交给数据库来执行,如果全部的命令执行成功, //则返回由更新计数组成的数组。数组元素的排序与SQL语句的添加顺序对象 int[] executeBatch() throws SQLException; ... } ``` ![](https://img.kancloud.cn/5a/38/5a388813a32d6ddc2ef448ff2e7cfd22_1119x134.jpg) * Statement: 该对象用于执行不带参数的简单的SQL语句。(不安全) * PreparedStatement:继承了Statement,用来执行动态的SQL语句。(安全) * CallableStatement:继承了PreparedStatement,用于执行对数据库存储过程的调用。(安全) **3. java.sql.PreparedStatement** ```java //作用:用来执行动态的SQL语句 public interface PreparedStatement extends Statement { //执行SQL查询,并返回该查询生成的ResultSet对象 ResultSet executeQuery() throws SQLException; //执行动态的insert、update、或delete语句,返回int为数据库中受影响的行数 int executeUpdate() throws SQLException; //将指定位置的参数设置为NULL值 void setNull(int parameterIndex, int sqlType) throws SQLException; //将指定位置的参数设置为boolean值 void setBoolean(int parameterIndex, boolean x) throws SQLException; //将指定位置的参数设置为int值 void setInt(int parameterIndex, int x) throws SQLException; //将指定位置的参数设置为long值 void setLong(int parameterIndex, long x) throws SQLException; //将指定位置的参数设置为float值 void setFloat(int parameterIndex, float x) throws SQLException; //将指定位置的参数设置为double值 void setDouble(int parameterIndex, double x) throws SQLException; //将指定位置的参数设置为String值 void setString(int parameterIndex, String x) throws SQLException; //将指定位置的参数设置为Date值 void setDate(int parameterIndex, java.sql.Date x) throws SQLException; //清除当前所有参数的值 void clearParameters() throws SQLException; ... } ``` **4. java.sql.DriverManager** ```java //作用:该类用来管理数据库中的所有驱动程序。它是JDBC的管理层, //作用在用户和驱动程序之间,跟踪可用的驱动程序,并在数据库的驱动程序之间建立连接 public class DriverManager { //获取与数据库的连接 @CallerSensitive public static Connection getConnection(String url, java.util.Properties info) throws SQLException {...} //ser, String password) 指定数据库的URL、用户名、密码来获取与数据库的连接 @CallerSensitive public static Connection getConnection(String url, String user, String password) throws SQLException {...} //设置驱动程序试图登陆到某一数据库可以等待的最长时间,单位为秒 public static void setLoginTimeout(int seconds) {...} //获取驱动程序试图登陆到某一数据库可以等待的最长时间,单位为秒 public static int getLoginTimeout() {...} //将一条消息打印到当前的JDBC日志流中 public static void println(String message) {...} ... } ``` **5. java.sql.ResultSet** ```java //1. 作用:该接口类似于一个临时表,用来暂时存放数据库查询操作所获得的结果集。 //2. ResultSet实例具有指向当前数据行的指针,指针开始的位置在第一条记录的前面,可以通过next()方法将指针向下移。 //3. 到JDBC2.0(JDK1.2)后,该接口添加了一组更新方法updateXXX(),该方法有两个重载,分别可以根据列的索引和列的名称来更新指定的列。 //但这一组方法没有对数据进行的操作同步到数据库中,还需要执行updateRow(),或insertRow()方法更新数据到数据库。 public interface ResultSet extends Wrapper, AutoCloseable { //将指针向下移一行 boolean next() throws SQLException; //有许多的getXXX方法来获取当前ResultSet当前行指定列的值 Object getObject(String columnLabel) throws SQLException; ... //判断指针是否位于当前ResultSet集合的第一行。如果是返回true,否则返回false。 boolean isFirst() throws SQLException; //判断指针是否位于当前ResultSet集合的最后一行。如果是返回true,否则返回false。 boolean isLast() throws SQLException; //将指针移动到集合的开头(第一行位置) void beforeFirst() throws SQLException; //将指针移到集合的尾部(最后一行位置) void afterLast() throws SQLException; //将指针移到当前记录的第一行 boolean first() throws SQLException; //将指针移到当前记录的最后一行 boolean last() throws SQLException; //获取当前行的索引号 int getRow() throws SQLException; //将指针移动ResultSet给定编号的行 boolean absolute( int row ) throws SQLException; //用对应的值类型更新指定的列 void updateInt(int columnIndex, int x) throws SQLException; void updateInt(String columnLabel, int x) throws SQLException; ... //当执行updateXXX方法后,还需要执行下面两个方法之一才能将数据同步到数据库 void insertRow() throws SQLException; void updateRow() throws SQLException; //删除当前行,但不同步到数据库中,而是在执行close() 方法后同步到数据库。 void deleteRow() throws SQLException; ... } ```