Java数据库连接(JDBC) API使Java应用程序可以与数据库进行交互。
1.入门
2.声明
该Statement
没有缓存,适用于简单和静态的SQL语句,例如CREATE或DROP。 在Statement
,我们在SQL中构造条件或参数的方式易于进行SQL注入,请记住不要使用引号和特殊字符。
-
statement.execute(sql)
–通常用于DDL,例如CREATE或DROP -
statement.executeUpdate(sql)
–通常用于DML,例如INSERT,UPDATE,DELETE -
statement.executeQuery(sql)
–运行SELECT查询并返回ResultSet
-
statement.executeBatch()
–批量运行SQL命令
文章:
3. PreparedStatement
PreparedStatement
扩展了Statement
以通过预编译和缓存SQL语句来提供更好的性能,非常适合需要多次执行的SQL语句。 此外,它提供了许多setXxx()
来通过转义引号和特殊字符来保护SQL注入。
-
preparedStatement.execute()
-通常用于DDL,例如CREATE或DROP -
preparedStatement.executeUpdate()
–通常用于DML,例如INSERT,UPDATE,DELETE -
preparedStatement.executeQuery()
–运行SELECT查询并返回ResultSet
-
preparedStatement.executeBatch()
–批量运行SQL命令
文章:
- JDBC PreparedStatement –创建表
- JDBC PreparedStatement –插入一行
- JDBC PreparedStatement –更新行
- JDBC PreparedStatement –删除一行
- JDBC PreparedStatement –选择行列表
- JDBC PreparedStatement –批更新
- JDBC PreparedStatement SQL IN条件
4. CallableStatement
CallableStatement
扩展了PreparedStatement
,用于执行数据库中的存储过程或函数。
-
conn.prepareCall(sql)
Oracle数据库
- JDBC CallableStatement –存储过程IN参数示例
- JDBC CallableStatement –存储过程OUT参数示例
- JDBC CallableStatement –存储过程CURSOR示例
PostgreSQL的
5.交易
conn.setAutoCommit(false); // default true
// start transaction block
// SQL statements
// end transaction block
conn.commit();
conn.setAutoCommit(true);
6. Spring JDBC数据库访问
JdbcTemplate
示例。
- Spring Boot JDBC示例
- Spring Boot JDBC存储过程示例
- Spring JdbcTemplate查询示例
- Spring JdbcTemplate处理大结果集
- Spring JdbcTemplate batchUpdate()示例
- Spring Boot JDBC映像BLOB示例
常见问题
- 如何在Maven本地存储库中添加Oracle JDBC驱动程序
- JDBC –如何从数据库中打印所有表名?
- 不再需要JDBC Class.forName()
- Oracle – ORA-12505,TNS:侦听器当前不知道连接描述符中给出的SID
- java.sql.SQLException:不允许操作:序号绑定和命名绑定不能合并!
- java.sql.SQLException:服务器时区值“ xx time”无法识别
参考文献
- Oracle – JDBC教程
- Java 8中的SQL:ResultSet流
- 维基百科– Java数据库连接
- 维基百科– SQL注入
- 声明JavaDocs
- PreparedStatement JavaDocs
- CallableStatement JavaDocs
- java.sql摘要JaavDocs
甲骨文
的MySQL
PostgreSQL的