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开始
相关推荐
一把年纪学编程10 分钟前
【牛马技巧】word统计每一段的字数接近“字数统计”
前端·数据库·word
极小狐15 分钟前
极狐GitLab 通用软件包存储库功能介绍
java·数据库·c#·gitlab·maven
钢铁男儿19 分钟前
C# 方法(可选参数)
数据库·mysql·c#
陆少枫40 分钟前
MySQL基础关键_013_常用 DBA 命令
数据库·mysql
赵渝强老师1 小时前
【赵渝强老师】在PostgreSQL中使用file_fdw访问外部文件系统
数据库·postgresql
智_永无止境1 小时前
Redis 8.0携新功能,重新开源
数据库·redis·开源
阿乾之铭1 小时前
Spring Boot 参数验证
java·数据库·mysql
唐人街都是苦瓜脸2 小时前
MySQL创建了一个索引表,如何来验证这个索引表是否使用了呢?
数据库·mysql
前进的程序员3 小时前
SQLite 数据库常见问题及解决方法
数据库·sqlite
zhcong_3 小时前
MySQL数据库操作
数据库·mysql