数据更新操作
在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 ;
在数据库中创建该表
范例:实现数据的增加
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
此时的数据库:
此时当程序执行增加的时候执行的是一条完整的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中的异常,观察此异常的继承结构:
这个时候通过整个的异常类的继承结构可以发现,在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
此时的数据库:
这种修改并没有改变代码的结构,只是更改了sql语句,如果要删除改变sql语句即可:
DELETE FROM 表名 WHERE 条件语句