目录
[2. 引入mysql数据库的驱动包](#2. 引入mysql数据库的驱动包)
[3. 创建数据源](#3. 创建数据源)
[5. 利用Java代码构造SQL对象](#5. 利用Java代码构造SQL对象)
[6. 向数据库服务器发送SQL语句执行](#6. 向数据库服务器发送SQL语句执行)
[7. 释放资源](#7. 释放资源)
[8. 查询语句的执行](#8. 查询语句的执行)
1.什么是JDBC
JDBK是java与数据库之间建立联系的桥梁,JDBC包含了一套Java定义的用于执行SQL语句的接口,主要作用是:与数据库建立连接,向数据库发送SQL语句,处理数据库返回的执行结果。
市面上有很多的数据库,每个数据库都会提供一个驱动包来兼容Java语言,驱动包里面是各种类实现了JDBC里面的各种接口,进而利用Java语言操控不同数据库,只需要学习JDBC这一套标准就可以了。
2. 引入mysql数据库的驱动包
我们要利用JDBC去操控库,必须引入数据库厂商提供的驱动包,下面我以MySQL数据库为例:
我们可以在这个网站搜索对应数据库的驱动包:

第一个是新的路径,里面是比较新的驱动包,第二个是比较老的驱动包。
看你使用的MySQL版本是5.7 还是 8.0。我这里是8.0;

点击画横线的地方就是下载jar包,也就是驱动包。
下载完之后不要解压缩,放到硬盘里面你知道的位置。
这个jar包里面是各种class文件,也就是Java代码编译后产生的文件,可以交给JVM去执行。
下面就要把你的jar包引入到你的项目中,这里我说的是传统的方法,后面利用Maven框架后就有更高效的方法。
我们先在idea中创建一个Java项目,然后可以设置一个lib目录,lib是library图书馆的意思,表示这是一个库,可以放很多第三方的类。
然后我们将刚才下载的jar包粘贴过来。
这里还要将lib目录设置成一个库的目录,右键lib目录,点击add as library:

这样设置好后,idea才能识别出来该jar包,然后就能看到里面的各种API了。

3. 创建数据源
我们在数据库连接之前需要创建数据源,因为我们在连接数据库的时候,需要知道连接的是那个数据库,在哪里。
java
//1. 创建数据源
//设置数据源的数据串,用户名,密码
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java1024?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("123456");
这个url组成主要是:

这里我们需要设置url相当于数据库的网络地址,然后设置数据库的用户名和密码,这些是MySQL驱动包里面包含的方法。
4.建立数据库连接
java
//2.建立数据库连接
Connection connection = dataSource.getConnection();
利用getConnection方法与数据库建立连接。这个方法还有一个受查异常,我们需要自己处理或者交给JVM处理。
Connection接口里面包含数据库连接的重要操作方法。
此时就可以运行下,看是否连接成功。不报红就是连接成功了。
5. 利用Java代码构造SQL对象
我们现在数据库里面创建一个学生表:
sql
create table student(id int, name varchar(20));
写法一:
直接使用将SQL语句写成字符串:
java
//3. java代码编写SQL语句
String sql1 = "insert into student values(1,'张三');";
Statement statement = connection.createStatement();//创建sql连接对象(相当于命令窗口)
这种写法的SQL语句都是静态的也就是固定的,并且使用Statement接口将SQL字符串的解析工作交给了MySQL服务器来进行,如果MySQL为多个客户端提供服务,就会导致MySQL服务器效率降低。所以我们使用第二种方法:
写法二:
java
//3. java代码编写SQL语句
System.out.println("请输入id:");
int id = sc.nextInt();
System.out.println("请输入名字:");
String name = sc.next();
String sql2 = "insert into student values(?,?);";
PreparedStatement statement = connection.prepareStatement(sql2);
statement.setInt(1,id);
statement.setString(2,name);
这里使用了PrepareStatement接口对字符串SQL语句进行了预处理,直接解析为SQL语句,传给服务器。
6. 向数据库服务器发送SQL语句执行
写法一:
java
//4. 将SQL语句发送给MySQL服务器执行
int a = statement.executeUpdate(sql1);//执行sql语句,并返回影响的行数(相当于输入命令)
写法二:
java
//4. 将SQL语句发送给MySQL服务器执行
int b = statement.executeUpdate();//增删改
// int c = statement.executeQuery(); 查
这里使用了executeUpdate()和executeQuery()方法将SQL语句发送给服务器执行,并返回执行影响的行数。
executeUpdate()方法是针对增删改操作的方法,executeQuery()方法针对查询操作。
7. 释放资源
java
//5. 释放资源,释放资源顺序与创建资源顺序相反
statement.close();
connection.close();
8. 查询语句的执行
java
public class demo2 {
public static void main(String[] args) throws SQLException {
//1. 创建数据源
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java1024?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("123456");
//2. 与数据库建立连接
Connection connection = dataSource.getConnection();
//3. 创建SQL语句
String sql = "select * from student;";
PreparedStatement statement = connection.prepareStatement(sql);
//4. 向数据库发送语句执行
ResultSet resultSet = statement.executeQuery();
//遍历结果集
while(resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("id= " + id + " " + "name= " + name);
}
//5.释放资源
resultSet.close();
statement.close();
connection.close();
}
}
DateSource接口是管理数据库连接的数据源,通过MysqlDateSource类(MySQL提供的驱动类)配置连接信息。
利用DateSource接口里面的getConnection方法来与数据库建立连接,并返回Connection类型的对象,Connection接口里面包含创建SQL执行对象等重要方法。
利用Connection接口里面的prepareStatement方法来解析SQL字符串成SQL语句。
利用PreparedSStatement接口里面的executeQuery方法执行SQL语句。
最后释放资源。