一篇掌握JDBC编程(包含数据库连接、SQL操作、事务处理)。

JDBC是一种用于数据库访问的应用程序接口,它由一组用Java语言编写的类和接口组成。使用JDBC,可以以统一的语法访问多种关系数据库,而无需担心数据库操作语言的差异,下面对数据库连接、SQL操作、事务处理结合代码进行详细介绍。

一、 数据库连接

建立与数据库的连接,使用Connection对象。
代码如下:

java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBConnectionExample {
   public static void main(String[] args) {
       try {
           Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");
           System.out.println("连接成功");
           conn.close();
       } catch (SQLException e) {
           e.printStackTrace();
       }
   }
}

username 用户名 password 数据库密码

二、SQL操作

1. 插入数据
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class InsertDataExample {
    public static void main(String[] args) {
        try {
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");
            String sql = "INSERT INTO users (username, email) VALUES (?, ?)";
            PreparedStatement pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, "my");
            pstmt.setString(2, "my@email.com");
            int rowsAffected = pstmt.executeUpdate();
            System.out.println(rowsAffected + " 条数据插入成功");
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
2. 查询数据
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class SelectDataExample {
    public static void main(String[] args) {
        try {
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");
            Statement stmt = conn.createStatement();
            String sql = "SELECT * FROM users";
            ResultSet rs = stmt.executeQuery(sql);
            while (rs.next()) {
                System.out.println("Username: " + rs.getString("username") + ", Email: " + rs.getString("email"));
            }
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
3. 更新数据
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class UpdateDataExample {
    public static void main(String[] args) {
        try {
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");
            String sql = "UPDATE users SET email = ? WHERE username = ?";
            PreparedStatement pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, "updated@email.com");
            pstmt.setString(2, "he");
            int rowsAffected = pstmt.executeUpdate();
            System.out.println(rowsAffected + " 条数据更新成功");
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

4. 删除数据
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class DeleteDataExample {
    public static void main(String[] args) {
        try {
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");
            String sql = "DELETE FROM users WHERE username = ?";
            PreparedStatement pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, "he");
            int rowsAffected = pstmt.executeUpdate();
            System.out.println(rowsAffected + " 条数据删除成功");
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

三、事务处理

当多条语句共同执行,需要保证要么全部执行成功,要么全部执行失败,事务的处理就很重要。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class TransactionExample {
    public static void main(String[] args) {
        Connection conn = null;
        try {
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");
            conn.setAutoCommit(false);

            Statement stmt = conn.createStatement();
            stmt.executeUpdate("INSERT INTO users (username) VALUES ('Alice')");
            stmt.executeUpdate("INSERT INTO users (username) VALUES ('Bob')");

            conn.commit();
            System.out.println("事务提交成功");
        } catch (SQLException e) {
            try {
                if (conn != null) {
                    conn.rollback();
                    System.out.println("事务回滚完成");
                }
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
            e.printStackTrace();
        } finally {
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
    }
}

setAutoCommit(false); 设置事务不自动提交。
conn.commit(); 提交事务。
conn.rollback(); 回滚事务。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值