前言
在使用JDBC连接数据库时,我们可以使用各种类型的SQL语句与数据库进行交互,包括数据查询语言(DQL)和非DQL语句,如插入,更新和删除数据。
JDBC提供了一些方法来封装非DQL语句的使用,例如PreparedStatement和CallableStatement。这些方法允许我们在执行非DQL语句时,使用占位符来代替实际的参数值,以避免SQL注入攻击。在执行非DQL语句时,这些方法还可以返回受影响的行数或生成的键值,以便我们可以进行后续的处理。
一、我们封装了什么?
在我之前的博客里提到了连接数据库的七大步骤,忘记的小伙伴请点击我复习!!
而我们对使用非DQL方法的封装,正是对第3、4、5、6、7步的封装,也就是对创建statement、发送sql语句、结果集解析、回收资源的封装。
那为什么要对这几步进行封装呢?有写过代码的小伙伴可能会有这样一个烦恼,就是在写对数据库的增删改方法时,第3、4、5、6、7步总是需要重复的写,这很让人感到枯燥,并且会降低我们写代码的效率,所以,本文章就是为了解决这些问题的。
二、如何封装?
我们直接看代码:
在这里用到的获取连接是我上篇博客内容:将getConnection方法封装。
感兴趣的小伙伴请点击我!!
//对非DQL语句代码的封装
public int executeUpdate(String sql,Object... params) throws SQLException {
//获取连接
Connection connection = JdbcUtil.getConnection();
//创建statement
PreparedStatement statement = connection.prepareStatement(sql);
//占位符赋值
//可变参数可以当做数组使用
for (int i = 1; i <= params.length; i++) {
statement.setObject(i,params[i - 1]);
}
//发生sql语句
int rows = statement.executeUpdate();
//关闭资源
statement.close();
//判断是否开启事务
if (connection.getAutoCommit()) {
//没有开启事务,正常回收连接
JdbcUtil.freeConnection();
}
return rows;
}
最后
本篇文章虽短,但是学会后可以大幅度减少代码量,节省下的时间可以更多的使用在更关键的部分。
在我的下篇博客中,我将会介绍对使用DQL方法的封装。