📜  JDBC 中的语句类型(1)

📅  最后修改于: 2023-12-03 15:32:06.284000             🧑  作者: Mango

JDBC 中的语句类型

在 Java 中访问数据库最常使用的方式之一就是 JDBC(Java Database Connectivity),JDBC 定义了一套标准的 API,提供了一组可以用于访问关系型数据库的接口。

在 JDBC 中,我们可以执行多种 SQL 语句,以实现对数据库的读取、插入、更新和删除等操作。下面将介绍 JDBC 中的一些常用语句类型。

Statement

Statement 是 JDBC 中最简单的语句类型,用于执行静态 SQL 语句。可以使用 Statement 对象来查询数据库中的数据,并且也可以执行一些修改数据库的操作,例如增加、修改和删除数据。Statement 必须手动设置参数,并且不支持占位符,会存在 SQL 注入的风险。

示例代码:

Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT * FROM users WHERE name='Alice'");
PreparedStatement

PreparedStatement 是 Statement 的升级版。PreparedStatement 可以在运行时动态地设置查询参数,同时也支持占位符(即参数使用 ? 代替),避免了 SQL 注入的风险。

示例代码:

PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM users WHERE name=?");
preparedStatement.setString(1, "Alice");
ResultSet resultSet = preparedStatement.executeQuery();
CallableStatement

CallableStatement 用于执行存储过程或函数。CallableStatement 可以通过将 SQL 语句编译成一个过程调用来执行存储过程或函数。CallableStatement 是 PreparedStatement 的扩展,可以使用 CallableStatement 注册 OUT 参数、IN OUT 参数、Ref 类型参数,以及 Cursor 类型的参数。

示例代码:

CallableStatement callableStatement = connection.prepareCall("{call get_user_by_id(?)}");
callableStatement.setInt(1, 1);
ResultSet resultSet = callableStatement.executeQuery();
Batch Statement

Batch Statement 是用来批处理 SQL 语句的。Batch Statement 可以将多个 SQL 语句一次性传递到数据库中执行,这样可以减少网络传输,提高性能。Batch Statement 可以使用 Statement、PreparedStatment 或 CallableStatement 实现。

示例代码:

Statement statement = connection.createStatement();
statement.addBatch("INSERT INTO users(name, age) VALUES('Alice', 24)");
statement.addBatch("INSERT INTO users(name, age) VALUES('Bob', 30)");
statement.executeBatch();
Conclusion

在 JDBC 中,有许多不同的语句类型可以使用。选择合适类型的语句可以提高程序执行效率。Statement、PreparedStatement、CallableStatement 和 Batch Statement 都是 JDBC 中的常用语句类型,分别用于执行静态 SQL 语句、动态 SQL 语句、执行存储过程或函数、批处理 SQL 语句。