JDBC基础一

JDBC链接步骤

1
2
3
url=jdbc:mysql://localhost:3306/userinformation
user=root
passWord=200101

注册驱动

驱动:即我们从官网下载的jar包,没有jar包,我们可以编译程序,但是程序无法运行,将jar包添加到依赖。

image-20220322143653633

注册驱动的两种方式

  • 多层注册,为了保证代码的整洁,这里将抛出异常的语句删除(com.mysql.jdbc.Driver()来源于我们刚刚导入的jar包,并不是idea自带的
1
2
Driver driver=new Driver();
DriverManager.registerDriver(driver);
  • 利用反射机制注册(最常用)
1
Class.forName("com.mysql.jdbc.Driver");

获取链接与获取数据库操作对象

1
2
3
4
//获取链接
Connection connection=DriverManager.getConnection(url,user,password);
//获取数据库操作对象
Statement statement=connection.createStatement();
1
2
3
4
5
6
7
8
9
//获取链接
Properties properties=new Properties();
properties.load(new FileReader("src/Mysql.properties"));
String url= properties.getProperty("url");
String user= properties.getProperty("user");
String passWord= properties.getProperty("passWord");
Connection connection=DriverManager.getConnection(url,user,passWord);
//获得数据库的操作对象
Statement statement=connection.createStatement();

定义sql语句以及结果判断

1
2
3
4
5
//定义操作语句
String insertSql="insert into usersimple values ('张山峰',12,'高管')";
String insertSql1="insert into usersimple values ('丽丽',25,'职员')";
String updateSql="update usersimple set 职位='职员' where 职位='高管' ";
String deleteSql="delete from usersimple where 用户名称='丽丽' ";

结果判断statement.executeUpdate(插入,更新,删除)

1
2
3
4
5
6
7
8
9
10
//结果判断
int count=0;
count=statement.executeUpdate(insertSql);
System.out.println(count==1?"插入成功":"插入失败");
count=statement.executeUpdate(insertSql1);
System.out.println(count==1?"插入成功":"插入失败");
count=statement.executeUpdate(updateSql);
System.out.println(count==1?"更新成功":"更新失败");
count=statement.executeUpdate(deleteSql);
System.out.println(count==1?"删除成功":"删除失败");

image-20220322151646099

image-20220322151658855

结果判断statement.executeQuery

在Java中,有一个ResultSet的数据类型,专门用于存储select的语句的结果,而且还拥有一个resultSet.next()的类似c语言中指针类型的操作。

next的初始位置在标题位置,next指向下一行,如果有则返回true否则为fasle

1
2
3
4
5
6
7
String selectSql="select * from usersimple";
ResultSet resultSet=statement.executeQuery(selectSql);
while (resultSet.next()){
String userName=resultSet.getString("用户名称");
int age=resultSet.getInt("年龄");
String position=resultSet.getString("职位");
System.out.println(userName+age+position);

关闭通道

  • 当我们执行jdbc时,这个时候是多个线程在同时运行,如果我们结束时候没有结束这些线程,他们会一直保存着,这个连接是与数据库服务器的一个连接,虽然你的方法结束了,但是这个资源依然存在数据库连接并没有释放,如果不设置close,长时间使用,你会发现自己的电脑卡的飞起。👻
  • 线程结束的顺序(就像栈那样,先进行链接,在获取对象,最后看结果,而关闭时,先进后出):

打开时:Connection -> PreparedStatement -> ResultSet
关闭时:ResultSet-> PreparedStatement -> Connection

  • 代码演示(要在finally语句中进行,保证结束后不会在进行其他操作)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
finally {
if (resultSet!=null){try{
resultSet.close();

}
catch (SQLException e) {
e.printStackTrace();}}
try {
if (statement!=null) {
statement.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try{
if (connection!=null){
connection.close();
}
}catch (SQLException e){
e.printStackTrace();
}
}

整体实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package com.zss.jdbc;

import com.mysql.jdbc.Driver;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;

/**
* @author zss
*/
public class JdbcLearn {
public static void main(String[] args) throws ClassNotFoundException, IOException, SQLException {
/*Driver driver=new Driver();
DriverManager.registerDriver(driver);*/
Class cla=Class.forName("com.mysql.jdbc.Driver");
//获取链接
Properties properties=new Properties();
properties.load(new FileReader("src/Mysql.properties"));
String url= properties.getProperty("url");
String user= properties.getProperty("user");
String passWord= properties.getProperty("passWord");
Connection connection=DriverManager.getConnection(url,user,passWord);
//获得数据库的操作对象
Statement statement=connection.createStatement();
//定义操作语句
String insertSql="insert into usersimple values ('张山峰',12,'高管')";
String insertSql1="insert into usersimple values ('丽丽',25,'职员')";
String updateSql="update usersimple set 职位='职员' where 职位='高管' ";
String deleteSql="delete from usersimple where 用户名称='丽丽' ";
//结果判断
int count=0;
count=statement.executeUpdate(insertSql);
System.out.println(count==1?"插入成功":"插入失败");
count=statement.executeUpdate(insertSql1);
System.out.println(count==1?"插入成功":"插入失败");
count=statement.executeUpdate(updateSql);
System.out.println(count==1?"更新成功":"更新失败");
count=statement.executeUpdate(deleteSql);
System.out.println(count==1?"删除成功":"删除失败");

String selectSql="select * from usersimple";
ResultSet resultSet=statement.executeQuery(selectSql);
while (resultSet.next()){
String userName=resultSet.getString("用户名称");
int age=resultSet.getInt("年龄");
String position=resultSet.getString("职位");
System.out.println(userName+age+position);
}
resultSet.close();
statement.close();
connection.close();
}
}