11.JDBC【pom:mysql-connector-java】+ JDBC 固定步骤(使用createStatement、preparedStatement对象传递sql)

什么是JDBC(Java Database Connectivity) : Java连接数据库!

pom支持:

<!-- 连接数据库-->
<dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>5.1.47</version>
</dependency>




前期环境准备

1.Navicat Premium上的操作:创建一个users表

参考我的博客:2. 在Navicat Premium上,调出能写sql 语句的步骤
在这里插入图片描述

CREATE TABLE users(
    id INT PRIMARY KEY,
    `name` VARCHAR(40),
    `password` VARCHAR(40),
    email VARCHAR(60),
    birthday DATE
);

INSERT INTO users(id,`name`,`password`,email,birthday)
VALUES(1,'张三','123456','zs@qq.com','2000-01-01');
INSERT INTO users(id,`name`,`password`,email,birthday)
VALUES(2,'李四','123456','ls@qq.com','2000-01-01');
INSERT INTO users(id,`name`,`password`,email,birthday)
VALUES(3,'王五','123456','ww@qq.com','2000-01-01');

SELECT	* FROM users;

2.新建一个空的mavaen项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.导入数据库依赖:mysql-connector-java

<!--mysql的驱动-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
</dependency>

4. 在IDEA上连接user表操作(模仿下面操作)

IDEA关联数据库:连接数据库,并测试是否连接到books表
在这里插入图片描述
Mysql8的连接需要在URL的数据库名后加上 “ ?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true ”这句话才能连接
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

JDBC 固定步骤

1. 加载驱动
2. 连接数据库,代表数据库
3. 向数据库发送SQL的对象Statement : CRUD【增加(Create)、检索(Retrieve)、更新(Update)和删除(Delete)】
4. 编写SQL (根据业务,不同的SQL)
5. 执行SQL
6. 关闭连接(先开的后关)

1.创建com.kuang.test包,TestJdbc类,使用createStatement对象传递sql

在这里插入图片描述

public class TestJdbc {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
    
        //配置信息
        String url="jdbc:mysql://localhost:3306/jdbc?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true";
        String username = "root";
        String password = "xxxxx";

        //1.加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2.连接数据库,代表数据库
        Connection connection = DriverManager.getConnection(url, username, password);

        //3.向数据库发送SQL的对象Statement,PreparedStatement : CRUD
        Statement statement = connection.createStatement();

        //4.编写SQL
        String sql = "select * from users";

        //5.执行查询SQL,返回一个 ResultSet  : 结果集
        ResultSet rs = statement.executeQuery(sql);

        while (rs.next()){
            System.out.println("id="+rs.getObject("id"));
            System.out.println("name="+rs.getObject("name"));
            System.out.println("password="+rs.getObject("password"));
            System.out.println("email="+rs.getObject("email"));
            System.out.println("birthday="+rs.getObject("birthday"));
        }

        //6.关闭连接,释放资源(一定要做) 先开后关
        rs.close();
        statement.close();
        connection.close();
    }
}

在这里插入图片描述
其中url,需要注意的地方

在这里插入图片描述
jdbc:mysql://localhost:3306/?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
中间在加上数据库:jdbc
即jdbc:mysql://localhost:3306/jdbc?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true




2.预编译SQL,使用preparedStatement对象传递sql

public class TestJDBC2 {
    public static void main(String[] args) throws Exception {
        //配置信息
        //useUnicode=true&characterEncoding=utf-8 解决中文乱码
        String url="jdbc:mysql://localhost:3306/jdbc?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true";
        String username = "root";
        String password = "xxxxxx";

        //1.加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2.连接数据库,代表数据库
        Connection connection = DriverManager.getConnection(url, username, password);

        //3.编写SQL
        String sql = "insert into  users(id, name, password, email, birthday) values (?,?,?,?,?);";

        //4.预编译
        PreparedStatement preparedStatement = connection.prepareStatement(sql);

        preparedStatement.setInt(1,22);//给第一个占位符? 也就是id的值为22;
        preparedStatement.setString(2,"狂神说Java");//给第二个占位符? 的值赋值为狂神说Java;
        preparedStatement.setString(3,"123456");//给第三个占位符? 的值赋值为123456;
        preparedStatement.setString(4,"24736743@qq.com");//给第四个占位符? 的值赋值为1;
        preparedStatement.setDate(5,new Date(new java.util.Date().getTime()));//给第五个占位符? 的值赋值为new Date(new java.util.Date().getTime());

        //5.执行SQL
        int i = preparedStatement.executeUpdate();

        if (i>0){
            System.out.println("插入成功@");
        }

        //6.关闭连接,释放资源(一定要做) 先开后关
        preparedStatement.close();
        connection.close();
    }
}


运行结果:

在这里插入图片描述
在这里插入图片描述

Java使用JDBCJava Database Connectivity)链接MySQL数据库需要几个步骤,以下是简单的概述: 1. **添加依赖**: 首先,你需要将MySQLJDBC驱动(如mysql-connector-java)添加到你的项目中。如果你使用Maven,可以在pom.xml文件中添加如下依赖: ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> <!-- 替换为你需要的版本 --> </dependency> ``` 2. **加载驱动**: 在Java代码中,你需要通过Class.forName()动态加载JDBC驱动,使其能在应用程序运行时找到数据库驱动程序: ```java Class.forName("com.mysql.cj.jdbc.Driver"); ``` 3. **创建连接**: 创建一个`Connection`对象传递数据库的URL、用户名和密码作为参数: ```java String url = "jdbc:mysql://localhost:3306/mydatabase"; String user = "username"; String password = "password"; Connection connection = DriverManager.getConnection(url, user, password); ``` 确保替换`mydatabase`、`username`和`password`为实际的数据库名、用户名和密码。 4. **执行SQL语句**: 使用`Statement`, `PreparedStatement`或`CallableStatement`执行SQL命令,例如获取数据: ```java // 常规SQL查询 Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("SELECT * FROM my_table"); // 使用PreparedStatement防止SQL注入 String sql = "SELECT * FROM my_table WHERE id = ?"; PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setInt(1, 1); resultSet = preparedStatement.executeQuery(); // 使用CallableStatement执行存储过程 CallableStatement callableStatement = connection.prepareCall("{call my_procedure(?)}"); callableStatement.setString(1, "some_value"); callableStatement.execute(); ``` 5. **处理结果集**: 使用`ResultSet`遍历查询结果: ```java while (resultSet.next()) { int column1 = resultSet.getInt("column1"); String column2 = resultSet.getString("column2"); System.out.println(column1 + ", " + column2); } ``` 6. **关闭资源**: 最后别忘了关闭`Statement`, `ResultSet`和`Connection`以释放数据库资源: ```java resultSet.close(); statement.close(); connection.close(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你说的白是什么白_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值