详述JDBC实现过程(增删改查)

一、在数据库中创建表

本例使用MySQL数据库管理系统,为了方便操作,使用图形化界面Navicat Premium来对MySQL进行操作。下面是建表语句:

use test;//使用test数据库
create table user_info(//在test数据库中创建一张表,名字是user_info,表中设置id,user_name和password字段
	id char(36),
	user_name varchar(12) unique,//unique约束保证user_name字段的唯一性
	password varchar(15)
)
此处需注意char和varchar的区别:
char:
 1. 写法:char(M)
 2. M的意思:最大的字符数,可以省略,默认为1
 3. 特点:固定长度的字符
 4. 空间的耗费:比较耗费
 5. 效率:高
varchar:
 1. 写法:varchar(M)
 2. M的意思:最大的字符数,不可以省略
 3. 特点:可变长度的字符
 4. 空间的耗费:比较节省
 5. 效率:低

二、使用JDBC实现查询

下面是示例代码

public class Test {
	public static void main(String[] args) {
		//由于在finally代码块中需要关闭资源,所以在此处定义变量而不是在try代码块中(目的是将变量的作用范围提升,提高代码复用性)
		Connection con = null;
		Statement sta = null;
		ResultSet res = null;

		try {
			Class.forName("com.mysql.jdbc.Driver");//1、加载驱动
		    con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");//2、与数据库建立连接
		    sta = con.createStatement();//3、创建SQL语句对象
		    String sql = "select * from user_info";//4、写SQL语句
		    res = sta.executeQuery(sql);//5、执行SQL语句
		    while (res.next()) {
				String id = res.getString("id");//返回id字段的值
				String name = res.getString("user_name");//返回user_name字段的值
				String password = res.getString("password");//返回password字段的值
				System.out.println(id+","+name+","+password);//6、使用while循环遍历结果集
			}//此处while循环的执行原理为:执行完SQL语句之后,ResultSet对象中就存储了访问数据库返回的数据表,也就是结果集合。ResultSet对象具有指向其当前数据行的指针,一开始是处于第一行之前,第一次使用next()就将指针指向返回结果集的第一行。每使用一次next(),指针就指向下一行,此时使用res.getString()方法返回该行的某一个字段的值,while循环每执行一次就遍历一条数据,当指针指到最后一行的后面的时候,此时返回布尔值false,结束循环。
		} catch (Exception e) {
			e.printStackTrace();
		}finally {//7、释放资源
			//注意:此处释放资源的顺序必须为ResultSet、Statement、Connection,因为如果先释放Connection,那么ResultSet和Statement占用的资源就会得不到释放。
			try {
				if (res!=null) {//此处需要判断对象是否为空,因为如果在赋值之前该对象为空,不加if判断的话,此时会报空指针异常的错误。
					res.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if (sta!=null) {
					sta.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if (con!=null) {
					con.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

三、使用JDBC实现添加、删除和修改

下面是示例代码:(由于添加、删除和修改仅SQL语句不同,所以此处仅以添加为例来说明)

public class Test {
	public static void main(String[] args) {
		//由于在finally代码块中需要关闭资源,所以在此处定义变量而不是在try代码块中(目的是将变量的作用范围提升)
		Connection con = null;
		Statement sta = null;
		ResultSet res = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");//1、加载驱动
			con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "0314");//2、建立连接
			sta = con.createStatement();//3、创建SQL语句对象
			for (int i = 0; i < 10; i++) {
				String id = UUID.randomUUID().toString();//此处使用UUID来随机生成id
				String sql = "insert into user_info(id,user_name,password) values('"+id+"','"+i+"','"+i+"')";//4、写SQL语句
				int affect = sta.executeUpdate(sql);//5、执行语句
				System.out.println(affect);//6、处理执行结果
			}
		} catch (Exception e) {
		e.printStackTrace();
		}finally {//7、释放资源
			//注意:此处释放资源的顺序必须为Statement、Connection,因为如果先释放Connection,那么Statement占用的资源就会得不到释放。
			try {
				if (sta!=null) {//此处需要判断对象是否为空,因为如果在赋值之前该对象为空,不加if判断的话,此时会报空指针异常的错误。
					sta.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}try {
				if (con!=null) {//
					con.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}	
补充:
实现删除的SQL语句为:
	delete * from user_info;//此语句为删除表中所有数据
	delete * from user_info where name='admin';//此语句为删除表中姓名是admin的所有数据
实现修改的SQL语句为:
	update user_info set id='d4d0654e-f15f-4940-a768-8ffed8cf56ef',user_name='Tom',password='123456';

猜你喜欢

转载自blog.csdn.net/IT_Helianthus/article/details/89635707