jdbc-api
2020-7-21 杨静
JDBC常用API和使用','一、JDBC 常用 API
1、Connection 接口
方法名称 | 功能描述 |
getMetaData() | 该方法用于返回数据库的元数据的 DatabaseMetaData 对象 |
createStatement | 用于创建一个 Statement 对象来将 SQL 语句发送到数据库 |
preparedStatement(String sql) | 用于创建一个 PreparedStatement 对象来将参数化的SQL语句发送到数据库 |
prepareCall(String sql) | 用于创建一个 CallableStatement 对象来调用数据库存储过程 |
2、Statement 接口
方法名称 | 功能描述 |
boolean execute(String sql) | 用于执行各种 SQL 语句,该方法返回一个 boolean 类型的值。如果为 true,表示所执行的 SQL 语句具备查询结果,可通过 Statement 的getResultSet() 方法查询结果 |
int executeUpdate(String sql) | 用于执行 SQL 中的 insert、update 和 delete 语句,该方法返回一个 int 类型的值,表示影响数据库中的行数 |
ResultSet executeQuery(String sql) | 用于执行 SQL 中的 select 语句(查询,遍历),该方法返回一个表示查询结果的 ResultSet 对象 |
execute是executeQuery和executeUpdate的综合.
通常我们没有必要使用execute方法来执行SQL语句,而是使用 executeQuery 或 executeUpdate 更适合。
具体可参考:execute、executeUpdate、executeQuery三者的区别
3、PreparedStatement 接口
方法名称 | 功能描述 |
executeUpdate() | 在此 PreparedStatement 对象中执行 SQL 语句,该语句必须是一个 DML 语句,或者无返回内容的 SQL 语句,比如 DDL 语句 |
executeQuery() | 在此 PreparedStatement 对象中执行 SQL 语句,该方法返回的是 ResultSet 对象 |
setInt(int parameterIndex, int x) | 将指定的参数设置为 int 值 |
setFloat(int parameterIndex, float x) | 将指定的参数设置为 Float 值 |
setString(int parameterIndex, String x) | 将指定参数设置的给定的 Date 值 |
setDate(int parameterIndex, Date x) | 将指定参数设置给定的 Date 值 |
addBatch() | 将一组参数添加到此 PreparedStatement 对象的批处理命令中 |
setCharacterStream(parameterIndex, reader, length) | 将指定的输入流写入数据库的文本字段 |
setBinaryStream(parameterIndex, x, length) | 将二进制的输入流数据写入到二进制的字段中 |
DML 语句:SELECT、UPDATE、INSERT、DELETE
DLL 语句:CREATE DROP ALERT
具体参考: sql语句分为三类(DML,DDL,DCL)-介绍
4、ResultSet 接口
getString(int columnIndex) | 用于获取 指定字段的 String 类型的值,参数 columnIndex 代表字段的索引 |
getString(String columnName) | 用于获取指定字段的 String 类型的值,参数 columnIndex 代表字段名称 |
getInt(int columnIndex) | 用于获取指定字段的 int 类型的值,参数 columnIndex 代表字段的索引 |
getInt(String columnName) | 用于获取指定字段的 int 类型的值,参数 columnIndex 代表字段名称 |
getDate(int columnIndex) | 用于获取指定字段的 Date类型的值,参数 columnIndex 代表字段索引 |
getDate(String columnName) | 用于获取指定字段的 Date类型的值,参数 columnIndex 代表字段名称 |
next() | 将游标从当前位置移到下一位置 |
absolute(int row) | 将游标移到此 ResultSet 对象的指定行 |
afterLast() | 将游标移动到此 ResultSet 对象的末尾,即最后一行之后 |
beforeFirst() | 将游标移动到此 ResultSet 对象开头,即第一行之前 |
previous() | 将游标移动到此 ResultSet 对象的上一行 |
last() | 将游标移动到此 Result 对象的最后一行 |
二、案例
1、往数据库里添加数据
① 数据表结构如下
② 代码如下
- package com.liuyanzhao;
- import java.sql.Connection;
- import java.sql.Date;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.SQLException;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- /*
- * @author LiuYanzhao
- */
- public class Demo1 {
- private static final String URL = \"jdbc:mysql://127.0.0.1:3306/jdbc_study?useUnicode=true&characterEncoding=utf8\";
- private static final String USER = \"root\";
- private static final String PASSWORD = \"\";
- public static Connection conn = null;
- public static void main(String[] args) throws ClassNotFoundException, SQLException, ParseException {
- //1、加载驱动,需要提前把 jar 包添加到 classpath 中
- Class.forName(\"com.mysql.jdbc.Driver\");
- //2、创建应用程序与数据库连接的 Connection 对象
- conn = DriverManager.getConnection(URL, USER, PASSWORD);
- //3、要执行的 sql 语句:name,password,email,status通过占位符填数,create_date 自动为当前时间
- String sql = \" INSERT INTO users\"+
- \"(name,password,birthday,email,create_date,status) \"+
- \"VALUES(\"+
- \"?,?,?,?,current_date(),?)\";
- //4、创建执行 SQL 语句的 PreparedStatement 对象
- PreparedStatement ptmt = conn.prepareStatement(sql);
- ptmt.setString(1, \"小美\");
- ptmt.setString(2, \"123456\");
- ptmt.setDate(3,new Date((new SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2011-10-1\")).getTime()) );
- ptmt.setString(4, \"xiaomei@126.com\");
- ptmt.setInt(5, 1);
- //5、真正执行 sql 语句,并返回影响的行数
- int x = ptmt.executeUpdate();
- System.out.println(\"影响行数:\" + x); //返回1
- }
- }
③运行结果
上面的操作,将在 jdbc_study 数据库的 users 表中添加一条记录,终端显示 1
2、查询(打印)数据库信息
①数据表如下
②代码如下
- package com.liuyanzhao;
- import java.sql.Connection;
- import java.sql.Date;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- /*
- * @author LiuYanzhao
- */
- public class Demo2 {
- private static final String URL = \"jdbc:mysql://127.0.0.1:3306/jdbc_study?useUnicode=true&characterEncoding=utf8\";
- private static final String USER = \"root\";
- private static final String PASSWORD = \"\";
- public static Connection conn = null;
- public static void main(String[] args) throws ClassNotFoundException, SQLException, ParseException {
- //1、加载驱动,需要提前把 jar 包添加到 classpath 中
- Class.forName(\"com.mysql.jdbc.Driver\");
- //2、创建应用程序与数据库连接的 Connection 对象
- conn = DriverManager.getConnection(URL, USER, PASSWORD);
- //3、要执行的 sql 语句:name,password,email,satic 通过占位符填数,create_date 自动为当前时间
- String sql = \" SELECT * FROM users\";
- //4、创建执行 SQL 语句的 PreparedStatement 对象
- PreparedStatement ptmt = conn.prepareStatement(sql);
- //5、真正执行 sql 语句,并返回影响的 ResultSet
- ResultSet rs = ptmt.executeQuery();
- //6、打印 ResultSet 数据集
- while(rs.next()) {
- System.out.print(rs.getInt(\"id\")+\" \");
- System.out.print(rs.getString(\"name\")+\" \");
- System.out.print(rs.getString(\"password\")+\" \");
- System.out.print(rs.getDate(\"birthday\")+\" \");
- System.out.print(rs.getString(\"email\")+\" \");
- System.out.print(rs.getDate(\"create_date\")+\" \");
- System.out.print(rs.getInt(\"status\")+\" \");
- System.out.println();
- }
- }
- }
③ 运行结果
控制台上可以看到如下界面
发表评论: