[MySQL] JDBC

目录

1.什么是JDBC

[2. 引入mysql数据库的驱动包](#2. 引入mysql数据库的驱动包)

[3. 创建数据源](#3. 创建数据源)

4.建立数据库连接

[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数据库为例:

我们可以在这个网站搜索对应数据库的驱动包:

https://mvnrepository.com/

第一个是新的路径,里面是比较新的驱动包,第二个是比较老的驱动包。

看你使用的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语句。

最后释放资源。

相关推荐
Pluchon11 小时前
硅基计划5.0 MySQL 陆 视图&JDBC编程&用户权限控制
数据库·mysql·1024程序员节
VT.馒头11 小时前
【力扣】2725. 间隔取消
javascript·leetcode·1024程序员节
vistaup12 小时前
Android 基于清单文件mate-data数据共享
1024程序员节
百锦再12 小时前
Python、Java与Go:AI大模型时代的语言抉择
java·前端·vue.js·人工智能·python·go·1024程序员节
笑对人生任我行12 小时前
ORM 使用说明
1024程序员节
杨筱毅12 小时前
【底层机制】【Android】【面试】Zygote 为什么使用 Socket 而不是 Binder?
android·1024程序员节·底层机制
阿部多瑞 ABU12 小时前
# AI高精度提示词生成项目——3D-VR 课件—— 最终仓库级 AI 提示词:生成《EduVR Studio》—— 专业级 3D-VR 课件创作平台
gitee·开源·github·aigc·ai编程·1024程序员节
vvvdg13 小时前
求下列线性变换的矩阵
线性代数·矩阵·1024程序员节
hazy1k13 小时前
51单片机基础-DS1302时钟
stm32·单片机·嵌入式硬件·51单片机·1024程序员节