数据更新操作

在SQL数据库之中对于数据的更新操作一共分为三类: 数据增加、数据修改、数据删除,而且这三类的处理操作只要编写正常的SQL语句即可,而Statement接口最大的特点是可以直接执行完整的SQL语句。

 

 范例:定义要使用到的数据库脚本

DROP DATABASE IF EXISTS yootk ;
USE yootk;
CREATE DATABASE yootk CHARACTER SET UTF8 ;
--[注释]
CREATE TABLE user(
    uid BIGINT AUTO_ INCREMENT COMMENT ' 主键列(自动增长) ' ,
    name VARCHAR(30) COMMENT '用户姓名' ,
    age INT COMMENT '用户年龄',
    birthday DATE COMMENT '用户生日' ,
    salary FLOAT COMMENT '用户月新',
    note TEXT COMMENT '用户说明' ,
    CONSTRAINT pk_uid PRIMARY KEY (uid)
    ) engine= INNODB ;
INSERT INTO user(name, age , birthday, salary,note) VALUES ('李兴华',18,' 2008-08-13', 8000.0, ' www. yootk. com') ;
INSERT INTO user(name,age , birthday , salary,note) VALUES (' 沐言优折',18,' 2009-09-15',9000.0,' ww.yootk.com') ;
INSERT INTO user(name ,age , birthday, salary,note) VALUES ('VIP学院', 18, '2009-09-15',78000.0, 'yootk.ke.qq.com') ;
COMMIT ;

 在数据库中创建该表

java更新sql数量 java数据库更新语句_java更新sql数量

范例:实现数据的增加

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class JDBCDemo {

    public static final String DRIVER = "com.mysql.cj.jdbc.Driver";    //数据库的驱动程序
    public static final String URL="jdbc:mysql://localhost:3306/yootk"; //连接地址
    public static final String USER = "root";   //用户名
    public static final String PASSWORD = "mysqladmin"; //密码

    public static void main(String[] args) throws Exception{

        Class.forName(DRIVER);  //将数据的驱动程序加载到容器内部
        Connection connection = DriverManager.getConnection(URL,USER,PASSWORD); //获取数据库的连接
        Statement statement = connection.createStatement(); //创建数据库的操作对象
        //sql插入字段代码,在以后填写sql语句时如果需要换行,最佳的做法是在前后多加一个空格
        String sql = " INSERT INTO user(name,age,birthday,salary,note) VALUES " +
                    " ('张三',48,'1888-08-01',1299,'www.baidu.com') ";
        //所有的数据库更新处理都会有一个影响的数据行数信息提示,而此时的返回值就是影响的数据行的个数据
        int count = statement.executeUpdate(sql);   //执行sql并返回更新的数据行数
        System.out.println("【数据更新操作影响行数】"+count);
        //如果现在直接关闭了数据库的连接,整个数据库所有的Statement对象也就自动关闭了
        connection.close(); //及时关闭

    }

}

【数据更新操作影响行数】1

此时的数据库:

java更新sql数量 java数据库更新语句_java更新sql数量_02

此时当程序执行增加的时候执行的是一条完整的SQL语句(这个SQL语句是以字符串常量的形式存在的),如果这个时候执行的语句执行错误也会直接报错,当改变上述的sql语句对应的数据后执行报错:

Exception in thread "main" java.sql.SQLException: Column count doesn't match value count at row 1
     at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
     at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
     at com.mysql.cj.jdbc.StatementImpl.executeUpdateInternal(StatementImpl.java:1333)
     at com.mysql.cj.jdbc.StatementImpl.executeLargeUpdate(StatementImpl.java:2106)
     at com.mysql.cj.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1243)
     at JDBCDemo.main(JDBCDemo.java:21)

而这就属于整个JDBC中的异常,观察此异常的继承结构:

java更新sql数量 java数据库更新语句_java更新sql数量_03

这个时候通过整个的异常类的继承结构可以发现,在JDBC里面最大的异常类型实际上是“SQLException",按照整个异常处理的流程来讲话,这个时候如果要想进行全部JDBC异常捕获的话,最简单的做法就是直接捕获“SQLException’

范例:执行数据的更新操作

SQL语法: UPDATE 表名称 SET字段=值,字段=值,... [WHERE更新条件];

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class JDBCDemo {

    public static final String DRIVER = "com.mysql.cj.jdbc.Driver";    //数据库的驱动程序
    public static final String URL="jdbc:mysql://localhost:3306/yootk"; //连接地址
    public static final String USER = "root";   //用户名
    public static final String PASSWORD = "mysqladmin"; //密码

    public static void main(String[] args) throws Exception{

        Class.forName(DRIVER);  //将数据的驱动程序加载到容器内部
        Connection connection = DriverManager.getConnection(URL,USER,PASSWORD); //获取数据库的连接
        Statement statement = connection.createStatement(); //创建数据库的操作对象
        //sql插入字段代码,在以后填写sql语句时如果需要换行,最佳的做法是在前后多加一个空格
        String sql = "UPDATE user SET name  = '李四', age = 17 ,salary = 100 WHERE name = '张三'";
        //所有的数据库更新处理都会有一个影响的数据行数信息提示,而此时的返回值就是影响的数据行的个数据
        int count = statement.executeUpdate(sql);   //执行sql并返回更新的数据行数
        System.out.println("【数据更新操作影响行数】"+count);
        //如果现在直接关闭了数据库的连接,整个数据库所有的Statement对象也就自动关闭了
        connection.close(); //及时关闭

    }

}

【数据更新操作影响行数】1

此时的数据库:

java更新sql数量 java数据库更新语句_sql_04

这种修改并没有改变代码的结构,只是更改了sql语句,如果要删除改变sql语句即可:

DELETE FROM 表名 WHERE 条件语句