目录
之前我们在连接数据库后,接着就在我们的数据库中的数据表执行了插入数据的操作。我们知道了要想对数据库进行更改操纵的话就必须经过五步骤:①与数据库建立连接②预编译sql语句并返回预编译(preparedstatement)对象③填充sql语句的占位符④预编译对象执行sql语句操作⑤关闭流对象(资源)。无论是插入,修改,还是删除操作,都是建立在数据库已经连接上的情况下,且每执行一次操作都需要将资源进行关闭。不难看出我们与数据库的连接及关闭流对象这两个步骤都可以进行封装,可以将它们写到工具类里面并作为静态方法来给我们调用。
首先我们想要建立一个工具类的包,用来存放我们的工具类的文件:

如上我们在建立了com.day2.utils包,并在该包下创建了JdbcUtils工具类。
接下来我们就可以在里面编写静态方法来实现我们的数据库连接的效果。可以将我们之前写好的数据库连接操作复制粘贴进来,就不需要再去写一遍,当然了,如果不是很着急的话可以再去敲一遍,加深印象。

接着我们去编写资源关闭的相关操作。
后期我们在使用到查询操作时,还需要关闭结果集对象,但是就目前我们进行的修改操作来说,只需要关闭数据库连接对象以及预处理对象即可。

如上我们创建好了更改的工具类,现在我们再去创建一个类来执行我们的修改操作。

现在我们去一步一步的编写代码,首先,我们要做的就是与数据库建立连接
JdbcUtils.getConnection(); //JdbcUtils这个类以及getConnection方法都处于创建的工具包下

接着我们再打开我们的数据库图形化工具,将我们的sql语句执行一下,如果没有错误,再将其复制粘贴到我们的eclipse中。

如上的sql语句没有错误,现在我们粘贴到eclipse中

为了防止sql的注入问题,我们的sql语句里面的值都要使用?作为占位符来进行替换,替换后如下:

现在我们来创建一个预处理对象来存储我们的sql语句:
PreparedStatement ps=conn.prepareStatement(sql);




因为我们要关闭资源,因此我们就不能使用throws来抛异常了,当我们使用try-catch语句块时,会使得我们之前声明的连接数据库对象connection以及预处理对象preparedstatement都变成了局部变量,会导致我们后面的关闭流操作时识别不到两个资源。所以我们需要将该对象创建在main方法体里面。如下:

- package com.day2;
-
- import java.sql.Connection;
- import java.sql.PreparedStatement;
- import java.sql.SQLException;
-
- import com.day2.utils.JdbcUtils;
-
- public class Update1 {
- public static void main(String[] args){
- Connection conn=null;
- PreparedStatement ps=null;
- try {
- //①与数据库建立连接
- conn=JdbcUtils.getConnection();
- //②预编译sql语句并返回预编译(preparedstatement)对象
- String sql="UPDATE jdbc_t SET NAME=? WHERE id=?;";
- ps=conn.prepareStatement(sql);
- //③填充sql语句的占位符
- ps.setString(1, "小龚正在做牛马");
- ps.setInt(2, 1);
- //④预编译对象执行sql语句操作
- ps.execute();
- //⑤关闭流对象(资源)
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }finally {
- JdbcUtils.CloseResource(conn, ps);
- System.out.println("修改成功!");}
- }
- }

最后我们去打开图形化工具,刷新并查看我们的修改后的数据。

如下,我们的数据修改成功了。
