一、数据库操作
首先需要在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代码具体实现
- 在使用JDBC之前要导入相应的jar包mysql-connector-java-5.1.9.jar
- 具体的代码实现(向数据库中插入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一共有六步
- 加载驱动,找到mysql-connector-java-5.1.9.jar包中的Driver类
- 建立连接, 使用DriverManager的getConnection方法
- 创建SQL语句对象 使用Connection的createStatement方法
- 书写SQL语句,需要保证SQL语句的正确性,如果有SQL语句语法错误则会报SQL 语法错误异常
- 执行SQL语句,插入,删除,修改,使用Statement的executeUpdate(sql)方法即可,该方法会返回当前操作对数据库影响的行数
- 释放资源,需要调用Connection的close()方法,和Statement的close()方法
关闭的顺序需要遵守后开先关的原则(否则有可能出现异常)类似于栈的思想(先进后出)
注意:不能把所有的close放在一个起
比如
try{
statement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
这样的话如果statement.close()出现了异常,就无法关闭connection了