[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语句。

最后释放资源。

相关推荐
学传打活5 天前
【边打字.边学昆仑正义文化】_进阶篇5 宇宙星系的运转(续1)
微信公众平台·1024程序员节·汉字·昆仑正义文化
fangzhanpeng16813 天前
快速掌握C#语言基础知识点(1.基础数据类型)
开发语言·c#·1024程序员节
无己心15 天前
面向多平台 AI 搜索引擎的适配层架构设计
前端·人工智能·搜索引擎·ai·1024程序员节
u01030552721 天前
AI驱动的安卓UI自动生成功能实现
人工智能·1024程序员节
u01030552721 天前
长株潭智能体赋能腾讯元器链接共享
1024程序员节
云贝贝贝23 天前
OceanBase认证体系介绍与备考指南
运维·服务器·oceanbase·1024程序员节
u01030552723 天前
Java图像处理实战指南
人工智能·1024程序员节
u01030552723 天前
Java AWT鼠标事件全解析
人工智能·1024程序员节
u0103055271 个月前
Java实用类应用精讲
人工智能·1024程序员节
u0103055271 个月前
Java I/O核心操作实战
人工智能·1024程序员节