JDBC编程

一、下载驱动包

中央仓库:Maven 存储库: mysql >> mysql-connector-java >> 5.1.49 (mvnrepository.com)

驱动包版本要与MySQL版本相匹配

二、将jar引入项目中

1、创建一个lib包,并把下载的jar复制到当前项目目录中。

2、把这个目录标记成库。

三、编写代码

固定流程:

java 复制代码
om.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Demo {
    public static void main(String[] args) throws SQLException {
        //1、创建一个DataSource(javax.sql)
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("0616");

        //2、建立和数据库服务器之间的连接,连接好后才能进行后续的 请求-响应 交互。
        Connection connection = dataSource.getConnection();

        //3、构造sql,代码中的 sql 不需要写;
        String sql = "insert into student values(1, '张三')";
        PreparedStatement statement = connection.prepareStatement(sql);

        //4.1、(增删改)把sql发给服务器,返回值是一个整数,表示影响到的行数
        int n = statement.executeUpdate();
        System.out.println("n = " + n);

        //4.2、(查)
            ResultSet resultSet = statement.executeQuery(); //ResultSet表示结果集合

            //遍历结果集合
            while (resultSet.next()){
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                System.out.println("id = " + id + ", name = " + name);
            }

            //释放资源
            resultSet.close();
            statement.close();
            connection.close();

        //5、执行完毕后,关闭连接,释放资源,先创建的后释放
        statement.close();
        connection.close();
    }
}

问题一:为什么要这样写?

java 复制代码
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setUrl();

这种写法的初心是为了让 MysqlDataSource 这个类名不要扩散到代码的其他地方。后续如果要修改数据库为别的数据库,代码改动小。(耦合性降低)

java 复制代码
MysqlDataSource mysqlDataSource = new MysqlDataSource();
mysqlDataSource.setUrl();

实际上这种写法也是可以的,简单直观。

问题二:URL

java 复制代码
"jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8&useSSL=false"

不用背,用的时候直接复制即可。

问题三:如何让用户输入一些信息插入呢?

java 复制代码
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学号:");
int id = scanner.nextInt();
System.out.println("请输入姓名:");
String name = scanner.next();
    ...
//3、构造sql,
String sql = "insert into student values(?, ?)";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1,id);
statement.setString(2,name);
//想添加什么类型的数据,就set什么类型,第一个数字对应上面的第几个?,从1开始
相关推荐
jiayou6413 小时前
KingbaseES 表级与列级加密完全指南
数据库·后端
GBASE1 天前
G术时刻 |GBase 8s数据库事务并发控制之封锁技术介绍(下)
数据库
xiezhr2 天前
逛GitHub发现了一款免费的带AI功能的数据库管理工具
数据库·ai编程·dba
吃糖的小孩3 天前
给 QQ AI 机器人设计“可控记忆”:会话摘要、手动长期记忆与角色卡边界
数据库
笃行3503 天前
金仓数据库数据安全双防线:静态存储加密与传输加密实战
数据库
笃行3503 天前
金仓数据库物理备份实战:sys_rman 全流程演练与误覆盖抢救
数据库
笃行3503 天前
金仓数据库逻辑备份实战:从全库导出到 Schema 替换的完整闭环
数据库
SelectDB4 天前
阶跃星辰基于 SelectDB 构建 PB 级 Agent 可观测平台
大数据·数据库·aigc
这个DBA有点耶4 天前
GROUP BY优化全解:如何写出既不丢数据又飞快的分组查询
数据库·mysql·架构