详述JDBC(Java DataBase Connectivity) 执行过程(上)——修改

一、数据库操作

首先需要在MySQL数据库中新建一个名为test的数据库,在数据库建立一个user_infor表用来存储用户的用户名和密码
这里使用Navicat Premium数据库管理软件(DBMS)操作
使用建表语句

	create database test;
	use test;
	
	create table user_infor(
	id char(36),
	user_name varchar(12) unique,
	password varchar(15)
)
1. id以后用来存放Java生成的UUID,因为Java生成的UUID为36位,所以这里使用char(36)类型,(char类型用来存贮长度固定的数据可以提高查询效率)
2. user_name因为有的时候存入用户名的长度不同,所以这里指定使用varchar(12)类型,要求用户名不允许重复,设置约束的unique (当插入相同的user_name数据的时候会插入失败)
3. password 和user_name类似但是可以重复

已经建好的表

在使用JDBC之前要了解使用SQL语句对数据表中的插入,删除,更改操作

  • 插入

insert into 表名 (列名1,列名2 ,、、、) values (‘数据1’,‘数据2’,、、、);

insert into user_infor (id,user_name,password) 
values ('bfa7044f-21ee-45af-ac8f-47a4b787865f' , 'Tom' , '123456');

可以看到表中已经插入了数据
插入成功
如果插入重复的user_name将会报错

insert into user_infor (user_name) values ('Tom' );
insert into user_infor (user_name) 
values ('Tom' )
> 1062 - Duplicate entry 'Tom' for key 'user_name'
> 时间: 0.008s

插入的时候也可以插入部分列的值(比如这里对user_name列插入数据)

insert into user_infor (user_name) values ( 'Jim' );

表中插入部分数据

  • 更改

updata 表名 set 列名1=‘新的数据1’,列名2=‘新的数据2’、、、 where 列名=‘要更改的数据’;

update user_infor set 
id='d84248fb-ede5-4d64-b538-4f9c67c2ce91',user_name='Tim',password='654321' 
where user_name='Tom';

修改数据
同样在修改数据的时候不能使修改后的user_name和已存在的user_name重复,否则会修改失败

  • 删除

delete from 表名 where 列名1=‘数据’;

delete from user_infor where user_name='Jim';

删除后的表
注意:这里如果没有where后面的条件,那么将会把表中的数据全部删除


二、JDBC连接数据库使用Java代码具体实现

  1. 在使用JDBC之前要导入相应的jar包mysql-connector-java-5.1.9.jar
  2. 具体的代码实现(向数据库中插入50条数据)
	Connection connection = null;
	Statement statement = null;
	try {
//		1.加载驱动
		Class.forName("com.mysql.jdbc.Driver");
//		2.连接数据库
		connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root");
//		3.创建SQL语句对象
		statement = connection.createStatement();


		for (int i = 0; i < 50; i++) {
//			生成36位的UUID
			String id = UUID.randomUUID().toString();
//			4.书写SQL语句
			String sql = "insert into user_infor (id,user_name,password) values ('"+ id +"','"+ i +"','"+ i +"')";
//			5.执行SQL语句,并把影响的行数返回
			int affect = statement.executeUpdate(sql);
			System.out.println(affect);
		}
//			5.执行SQL语句,这里使用executeUpdate()方法返回影响的行数
//			int affect = statement.executeUpdate(sql);
//			System.out.println(affect);
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
//		6.释放资源
//		不管之前执行的代码书否出错,都要释放资源,
// 		所以把释放资源的代码放在finally中
		try {
//		首先判断connection是否为空,
//		如果在connection赋值前就出现了错误,那么connection为空,
//    	不进行判断connection的话,释放资源的时候就会报空指针异常
			if (statement!= null) {
				statement.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		try {
			if (connection != null) {
				connection.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}

总结一下,在Java中使用JDBC一共有六步

  1. 加载驱动,找到mysql-connector-java-5.1.9.jar包中的Driver类
  2. 建立连接, 使用DriverManager的getConnection方法
  3. 创建SQL语句对象 使用Connection的createStatement方法
  4. 书写SQL语句,需要保证SQL语句的正确性,如果有SQL语句语法错误则会报SQL 语法错误异常
  5. 执行SQL语句,插入,删除,修改,使用Statement的executeUpdate(sql)方法即可,该方法会返回当前操作对数据库影响的行数
  6. 释放资源,需要调用Connection的close()方法,和Statement的close()方法
    关闭的顺序需要遵守后开先关的原则(否则有可能出现异常)类似于栈的思想(先进后出)

注意:不能把所有的close放在一个起
比如

try{
	statement.close();
	connection.close();
} catch (SQLException e) {
	e.printStackTrace();
}

这样的话如果statement.close()出现了异常,就无法关闭connection了

猜你喜欢

转载自blog.csdn.net/qq_35302939/article/details/89636519