前言:
大家好,我是良辰丫,💞💞💞JDBC全称为Java Database Connectivity,可以叫做Java数据库连接,可以将java代码与sql语句进行连接,是不是很神奇呢?我们慢慢去学习JDBC的相关操作.💟💟💟🍎励志语句:生活也许会让我们遍体鳞伤,但最终这些伤口会成为我们一辈子的财富。
💦期待大家三连,关注,点赞,收藏。
💌作者能力有限,可能也会出错,欢迎大家指正。
💞愿与君为伴,共探Java汪洋大海。
JDBC
- 1 .简述JDBC
- 2. JDBC驱动包
- 3. JDBC代码的编写
- 3.1 创建好数据源
- 3.2 代码与数据库建立连接
- 3.3 让用户通过控制台输入一下待插入的数据.
- 3.4 操作数据库
- 3.5 执行数据库
- 3.6 释放资源
- 4. JDBC插入数据完整代码
1 .简述JDBC
JDBC
,全称为Java Database Connectivity,java数据库连接。是一种用于执行SQL语句的Java API,它是Java中的数据库连接规范。这个API由java.sql.,javax.sql. 包中的一些类和接口组成,它为Java开发人员操作数据库提供供了一个标准的API,可以为多种关系数据库提供统一访问.在以后工作后,很少用sql语句直接操作数据库,我们会通过代码操作或者公司提供的软件进行点点点.
那么问题就来了,这么多数据库软件,而且也不是一家公司,那么他们与java代码进行连接的时候各种数据库软件是否提供相同的API呢?显然是不同的API,不同的开发人员,没有进行任何约定,那么他们弄的API肯定是不同的.
如果有不同的API,程序员在使用不同的数据库软件就需要用到不同的API,那就真的是哭了程序员,要学习各种各样的API.这个时候呢,java就给了他们一个要求,要想使用java,必须对各自API进行一定的包装,让java程序员不管使用哪个数据库软件,都调用相同名字的API.
JDBC的优点:
- Java语言访问数据库操作完全面向抽象接口编程
- 开发数据库应用不用限定在特定数据库厂商的API
- 程序的可移植性大大增强
2. JDBC驱动包
所谓数据库驱动包
,是数据库厂商,提供一个程序,来完成对API的转换(对原生API封装),再根据java提供的要求,形成JDBC的形状.程序员要想进行JDBC代码的编写,必须在项目中导入对应的数据库驱动包,要想导入驱动包,先得下载驱动包.
java官方为我们提供了一种中央仓库,maven仓库,相当于我们手机上的应用商店,我们下载某一款游戏时,不用专门去官网下载,直接在应用商店下载就可以了.大家没必要去记官网,直接在浏览器上搜索maven仓库就可以了.
点进上述箭头,进行下载,注意我们下载的驱动包要和数据库的大版本一致,什么叫大版本,就拿我的mysql软件来说,我的版本是8以上的.如下图,我们在下载JDBC的时候也要下载大版本为8的,小版本不做要求.
这里还需要强调的是,下载好的驱动包,不必解压,java可以识别数据库驱动包的压缩包文件.
到了这里,我们就需要把JDBC的驱动包导入我们的代码中,我们先创一个文件夹lib用于存放驱动包文件,直接复制压缩包文件,点击lib文件,ctrl+v复制即可.
然后我们右击lib,选择Add as Library,执行完这一步操作,idea就能识别目录里的jar
wenj
3. JDBC代码的编写
3.1 创建好数据源
DataSource dataSource = new MysqlDataSource();
// 设置数据库所在的地址
((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/stu2?characterEncoding=utf8&useSSL=false");
// 设置登录数据库的用户名
((MysqlDataSource) dataSource).setUser("root");
// 这个是设置登录数据库的密码
((MysqlDataSource) dataSource).setPassword("");
3306为数据库默认端口号,SSL是加密协议,false表示未加密,127.0.0.1为环路ip(表示自己主机ip),root为用户名,默认都是root,密码为数据库的密码,我没有设置密码,所以为空字符串.
3.2 代码与数据库建立连接
Connection connection = dataSource.getConnection();
3.3 让用户通过控制台输入一下待插入的数据.
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学号: ");
int id = scanner.nextInt();
System.out.println("请输入姓名: ");
String name = scanner.next();
3.4 操作数据库
String sql = "insert into student values(?, ?)";
// 此处光是一个 String 类型的 sql 还不行, 需要把这个 String 包装成一个 "语句对象"
PreparedStatement statement = connection.prepareStatement(sql);
// 进行替换操作.
statement.setInt(1, id);
statement.setString(2, name);
System.out.println("statement: " + statement);
3.5 执行数据库
int ret = statement.executeUpdate();
System.out.println(ret);
3.6 释放资源
statement.close();
connection.close();
接着我们来执行一下代码
然后呢,我们来看一下数据库的信息.
4. JDBC插入数据完整代码
//import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import com.mysql.cj.jdbc.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;
public class TestJDBC {
public static void main(String[] args) throws SQLException {
Scanner scanner = new Scanner(System.in);
// 1. 创建好数据源
DataSource dataSource = new MysqlDataSource();
// 设置数据库所在的地址
((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/stu2?characterEncoding=utf8&useSSL=false");
// 设置登录数据库的用户名
((MysqlDataSource) dataSource).setUser("root");
// 这个是设置登录数据库的密码
((MysqlDataSource) dataSource).setPassword("");
// 2. 让代码和数据库服务器建立连接
Connection connection = dataSource.getConnection();
// 2.5 让用户通过控制台输入一下待插入的数据.
System.out.println("请输入学号: ");
int id = scanner.nextInt();
System.out.println("请输入姓名: ");
String name = scanner.next();
// 3. 操作数据库->插入数据
// 关键所在就是构造一个 SQL 语句~
// 在 JDBC 中构造的 SQL, 不必带上 ;
// ; 只是在命令行中用来区分不同的语句. 现在是直接在代码中操作~~
String sql = "insert into student values(?, ?)";
// 此处光是一个 String 类型的 sql 还不行, 需要把这个 String 包装成一个 "语句对象"
PreparedStatement statement = connection.prepareStatement(sql);
// 进行替换操作.
statement.setInt(1, id);
statement.setString(2, name);
System.out.println("statement: " + statement);
// 4. 执行 SQL , 相当于扫码取件
// SQL 里面如果是 insert, update, delete, 都使用 executeUpdate 方法.
// SQL 里面如果是 select, 则使用 executeQuery 方法.
// 返回值就表示这个操作, 影响到了 几行. 就相当于在控制台里输入 sql 之后, 得到的数字~
int ret = statement.executeUpdate();
System.out.println(ret);
// 5. 此时 SQL 已经执行完毕. 然后还需要释放资源.
statement.close();
connection.close();
}
}
后序:
读了这篇文章,想必大家对JDBC编程有了一定的认识和了解,希望小小的文章可以帮到大家,我们下一篇文章再见.🍬🍬🍬