所有JDBC驱动程序必须实现的接口,该接口专门提供给数据库厂商使用。在编写JDBC程序时,必须要把所使用的数据库驱动程序或者类库加载到项目的classpath中。
static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
该接口用于加载JDBC驱动和创建数据库的连接,有两个重要的静态方法
方法名称 | 功能描述 |
---|---|
registerDriver(Driver driver) | 注册JDBC驱动程序 |
getConnection(String url, String user, String pwd) | 连接数据库,返回给定的Connection对象 |
方法名称 | 功能描述 |
---|---|
getMetaData() | 返回表示数据库的元数据的DatabaseMetaData对象 |
createStatement() | 创建一个Statement对象并将SQL语句发送到数据库 |
prepareStatement(String sql) | 创建一个prepareStatement并将参数化的SQL语句发送到数据库 |
prepareCall(String sql) | 创建 CallableStatement 用于调用数据库存储过程的对象 |
PreparedStatement预处理语句是预编译的,对于批量处理可以大大提高效率。也叫JDBC存储过程。总的来说,仅仅进行一次存取,使用prepareStatement的开销远远大于Statement的开销,因此对数据库进行一次存取时,使用Statement对象,批量处理使用prepareStatement。
Statement有三个常用的执行SQL语句的方法,executeQuery(sql)
、execute(sql)
和executeUpdate(sql)
。
预处理语句常用的方法
方法名称 | 功能描述 |
---|---|
executeQuery() | 略 |
executeUpdate() | 略 |
setInt(int parameterIndex, int x) | 设置整型参数 |
setArray(int parameterIndex, Array x) | 设置数组参数 |
setDate(int parameterIndex, java.sql.Date x, Calendar cal) | 设置日期参数 |
setBoolean(int parameterIndex, boolean x) | 设置布尔参数 |
setByte(int parameterIndex, byte x) | 设置字节参数 |
setString(int parameterIndex, String x) | 设置字符串参数 |
…… | …… |
实例①
stmt = conn.createStatement();
sql = "SELECT id, name, url FROM websites";
ResultSet rs = stmt.executeQuery(sql);
实例②
String pre_sql = "SELECT * FROM websites where id = ? or name = ? ";
PreparedStatement pstmt = conn.prepareStatement(pre_sql);
pstmt.setInt(1, 1);
pstmt.setString(2, "Facebook");
ResultSet rs = pstmt.executeQuery();
以及
String pre_sql = "INSERT INTO websites (id, name, url) values (?, ?, ?)";
PreparedStatement pstmt = conn.prepareStatement(pre_sql);
pstmt.setInt(1, 6);
pstmt.setString(2, "Test");
pstmt.setString(3, "https://www.tsuk1.cn/");
pstmt.execute();
用于保存JDBC查询返回的结果集合。
常用方法总结
方法名称 | 功能描述 |
---|---|
absolute(int row) | 将光标移动到此 ResultSet 对象中的给定行号 |
last() | 将光标移动到此 ResultSet 对象的最后一行 |
previous() | 将光标移动到此 ResultSet 对象中的上一行 |
afterLast() | 将光标移动到此 ResultSet 对象的末尾,紧接在最后一行之后。如果结果集不包含任何行,则此方法不起作用. |
beforeFirst() | 将光标移动到此 ResultSet 对象的前面,紧挨着第一行的前面。如果结果集不包含任何行,则此方法不起作用。 |
实例
ResultSet rs = stmt.executeQuery(sql);
// 展开结果集数据库
while(rs.next()){
// 通过字段检索
int id = rs.getInt("id");
String name = rs.getString("name");
String url = rs.getString("url");
}