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开始
相关推荐
一 乐1 小时前
网红酒店|基于java+vue的网红酒店预定系统(源码+数据库+文档)
java·开发语言·数据库·毕业设计·论文·springboot·网红酒店预定系统
Alfadi联盟 萧瑶2 小时前
Python-用户账户与应用程序样式
数据库·sqlite
影子24016 小时前
Navicat导出mysql数据库表结构说明到excel、word,单表导出方式记录
数据库·mysql·excel
java_heartLake7 小时前
PostgreSQL15深度解析(从15.0-15.12)
数据库·postgresql
nuc-1278 小时前
sqli-labs学习记录8
数据库·学习·sqli-labs
余华余华9 小时前
计算机等级考试数据库三级(笔记3)
服务器·数据库·oracle
南風_入弦10 小时前
Oracle logminer详解
数据库·oracle·恢复
小安同学iter11 小时前
SpringBoot (二) 日志系统
数据库·spring boot·后端
Chandler2411 小时前
Redis:事务
数据库·redis·缓存
是阿建吖!12 小时前
【MySQL】事务
数据库·mysql