JDBC连接数据库

JDBC 连接数据库

流程

  1. 加载数据库驱动:(老版 新版JDBC8.0直接建立连接)
    在开始之前,您需要加载 JDBC 驱动,这样 Java 应用程序就能知道如何与数据库通信。这通常是通过调用 Class.forName() 实现的。

  2. 建立连接:
    使用 DriverManager.getConnection() 方法建立与数据库的连接。您需要提供数据库的 URL、用户名和密码。
    Connection是数据库的连接对象,可以通过连接对象来创建一个Statement用于执行SQL语句

    Connection connection = DriverManager.getConnection(url,user,password);
    
  3. 创建 StatementPreparedStatement 对象:
    一旦连接建立,您可以创建一个 StatementPreparedStatement 对象来执行 SQL 语句。PreparedStatement 相比 Statement,可以预编译 SQL 语句,并防止 SQL 注入攻击。

    Statement statement = connection.createStatement()
    
  4. 执行 SQL 语句:
    使用 StatementPreparedStatement 对象执行 SQL 语句。这可以是查询(SELECT)、更新(UPDATE)、插入(INSERT)或删除(DELETE)操作。

  5. 处理结果:
    如果执行的是查询操作,您需要处理返回的 ResultSet 对象。可以遍历这个对象来获取查询结果。

  6. 关闭连接:(新版Java 直接try中关闭连接)
    操作完成后,关闭 Statement/PreparedStatement 和连接。这是非常重要的,因为打开的数据库连接会占用资源。

下面是一个简单的 JDBC 使用示例:

import java.sql.*;

public class JDBCDemo {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/yourdatabase"; // 数据库的 URL
        String user
## 代码
```java
//  数据库连接
    @Test
    public void test1() {
    		String url = "jdbc:mysql://localhost:3306/m1?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";
        	String user = "root";
        	String password = "root";
        //1. 通过DriverManager来获得数据库连接
			try (Connection connection = 
							DriverManager.getConnection(url,user,password);
     	//2. 创建一个用于执行SQL的Statement对象
     			Statement statement = connection.createStatement()){   //注意前两步都放在try()中,因为在最后需要释放资源!
    	//3. 执行SQL语句,并得到结果集
    			ResultSet set = statement.executeQuery("select * from 表名");
    	//4. 查看结果
    			while (set.next()){
        		...
    	}
			}catch (SQLException e){
    			e.printStackTrace();
		}
		//5. 释放资源,try-with-resource语法会自动帮助我们close
 	}

批处理

代码

@Test
    public void test2(){
        String url = "jdbc:mysql://localhost:3306/m1?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";
        String user = "root";
        String password = "root";

        String query = "INSERT INTO students (id, name, age) VALUES (?, ?, ?)";

        try (Connection conn = DriverManager.getConnection(url, user, password);
             PreparedStatement pstmt = conn.prepareStatement(query)) {

            conn.setAutoCommit(false); // 关闭自动提交

            // 添加批处理命令
            for (int i = 1; i <= 10; i++) {
                pstmt.setInt(1, i);
                pstmt.setString(2, "Student" + i);
                pstmt.setInt(3, 20 + i);
                pstmt.addBatch();
            }

            int[] updateCounts = pstmt.executeBatch();
            conn.commit(); // 提交事务

            System.out.println("批处理执行完毕,共插入记录数:" + updateCounts.length);

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

JDBC开启事务

基于您提供的信息,以下是对JDBC事务管理的基本概念和Java代码实现的总结:

JDBC事务管理基础

在JDBC中,默认情况下,每个SQL语句执行后都会自动提交,这被称为自动提交模式(auto-commit mode)。在某些场景中,如需要保持数据的一致性或执行一系列相互依赖的操作时,需要手动管理事务。

关闭自动提交

通过调用Connection.setAutoCommit(false),可以关闭自动提交模式。关闭后,所有的SQL操作都不会立即生效,直到显式调用commit()rollback()

提交和回滚

  • 提交(Commit):通过Connection.commit()方法可以提交事务,使得自关闭自动提交以来的所有操作永久生效。
  • 回滚(Rollback):通过Connection.rollback()方法可以回滚事务,撤销自关闭自动提交以来的所有操作。

使用回滚点(Savepoint)

可以在事务中创建一个或多个回滚点(Savepoint)。如果需要回滚到特定的状态,可以使用rollback(savepoint)方法回滚到该回滚点。

重新开启自动提交

如果需要从手动事务管理切换回自动提交模式,可以通过调用Connection.setAutoCommit(true)实现。这样做会提交当前事务中的所有更改。

示例代码

public class JDBCTransactionExample {
    public static void main(String[] args) {
       String url = "jdbc:mysql://localhost:3306/m1?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";
        String user = "root";
        String password = "root";

        try (Connection connection = DriverManager.getConnection(url, user, password)) {
            // 关闭自动提交
            connection.setAutoCommit(false);

            try (Statement statement = connection.createStatement()) {
                statement.executeUpdate("INSERT INTO user VALUES ('a', 1234)");
                statement.executeUpdate("INSERT INTO user VALUES ('b', 1234)");

                // 创建回滚点
                Savepoint savepoint = connection.setSavepoint();

                statement.executeUpdate("INSERT INTO user VALUES ('c', 1234)");

                // 回滚到回滚点
                connection.rollback(savepoint);

                statement.executeUpdate("INSERT INTO user VALUES ('d', 1234)");

                // 提交事务
                connection.commit();
            } catch (SQLException e) {
                connection.rollback(); // 出错时回滚
                throw e;
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

MySQL 连接下载地址

下载地址:https://dev.mysql.com/downloads/file/?id=477058

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值