Java Database Connectivity——3. Java 执行数据库操作(PreparedStatement)

上一篇我们说了 Statement 这个接口,但是啊,这个接口不好啊,我们以后都是使用它的一个子接口进行操作的,这篇我们来说一下这个子接口 PreparedStatement

一、认识PreparedStatement

Java Database Connectivity——3. Java 执行数据库操作(PreparedStatement)

可以看到啊,这个 PreparedStatement 是继承了我们的 Statement ,学过继承的我们都知道,子类有着相比父类更强大的方法或者属性,也就是比父类更好了。我们来看一下这个 PreparedStatement 类,打开 API

Java Database Connectivity——3. Java 执行数据库操作(PreparedStatement)

找到这个类之后我们可以看到啊,同样也是 java.sql 下面的类,并且这个类继承了 Statement 啊,没有问题

接着来说说这个 PreparedStatement 和这个 Statement 有啥区别呢?

Java Database Connectivity——3. Java 执行数据库操作(PreparedStatement)

我们看这个技术原理,我们以后不会将这个 SQL 写好让数据库去执行了,而是类似的创建一个 SQL 模板,然后用 ? 代替参数,作为一个占位符,到时候,我们将占位符动态替换,而且啊,执行的速度要快于这个 Statement 对象,提高效率

二、使用 PreparedStatement 对数据库进行增、删、改操作

1. 增

其实这个用法和 Statement 类似,就是改变一点点内容,我们还是往这个 t_log 表中插入一条数据,来看一下怎么去操作

先创建一个类,InsertDataPreparedStatement 然后我们写一个 SQL

Java Database Connectivity——3. Java 执行数据库操作(PreparedStatement)

但是呢,我们使用这个 ? 占位符去替换这个我们要插入的值,当然啊, id 还是 null ,这个不需要改变

接着我们去获取连接,然后通过连接去获取 PreparedStatement 

Java Database Connectivity——3. Java 执行数据库操作(PreparedStatement)

我们不需要去创建了,直接就能拿到,然后我们怎么给这个占位符赋予值呢?我们是通过这个 PreparedStatement 去使用 set 方式去赋值

Java Database Connectivity——3. Java 执行数据库操作(PreparedStatement)

可以看到啊,这个 set 有很多种方法,有 setString、setInt 等等,具体怎么选择就要看你数据库表中字段的类型了,这个对应关系可以看我的 MySQL 的课程啊,我都说过,就不多说了

这里我的 content 是一个 varchar ,所以是赋值一个 String 。

然后看参数,第一个参数是 parameterIndex 这个就是占位符的位置,我们从出现的第一个占位符开始计算,从 1 开始,依次往后,这也就是说

Java Database Connectivity——3. Java 执行数据库操作(PreparedStatement)

如果这个 null 前面还有一个 ? ,那么就是这样的了

Java Database Connectivity——3. Java 执行数据库操作(PreparedStatement)

我这个是瞎写的啊,仅仅就是一个举例,再改回去~~~

后面的这个 x 就是参数,所以我们写全了就是这样的

Java Database Connectivity——3. Java 执行数据库操作(PreparedStatement)

这里的时间需要做一下转换,所以就写成这样了

接着调用 executeUpdate() 返回操作记录数,最后做关闭即可

Java Database Connectivity——3. Java 执行数据库操作(PreparedStatement)

我们来测试一下

Java Database Connectivity——3. Java 执行数据库操作(PreparedStatement)

可以看到啊,虽然记录插入进去了,但是这个时间是不对的。这里我们需要这样去操作一下

Java Database Connectivity——3. Java 执行数据库操作(PreparedStatement)

自己去格式化一下时间,然后使用 String 类型去插入值

2. 改

改的话就简单了,我们再创建一个类,然后修改一下 SQL 和 传入的参数就好,直接上代码

Java Database Connectivity——3. Java 执行数据库操作(PreparedStatement)

是OK的啊,再来看一下删除

3. 删

同样,新弄一个类,然后我们改一下 SQL 语句即可

Java Database Connectivity——3. Java 执行数据库操作(PreparedStatement)

同样都是没有问题的

 

大家多练习一下,有问题可以加我 QQ :2100363119.