在这个迷你银行应用程序项目中,我们将利用 JDBC 技术来连接并操作数据库,从而实现用户账户和交易的管理。通过 JDBC,我们不仅能执行可靠的 SQL 操作,还能妥善处理事务。
在 JDBC 的机制中,事务被视为一个单一的工作单元。通过设置 INLINECODE29100601,我们可以将多个 SQL 语句分组执行,只有调用 INLINECODE3cbab65c 时更改才会真正保存。如果在此过程中任何语句执行失败,回滚(rollback)机制将确保数据的一致性。
该应用程序提供了一个菜单驱动的控制台界面,允许用户执行以下操作:
- 创建账户
- 登录账户
- 查看余额
- 向其他客户转账
前置准备
> – MySQL
> – Eclipse
> – MySQL JDBC Connector (JAR)
逐步实施指南
第一步:Eclipse 项目搭建
1. 创建 Java 项目:
- 打开 Eclipse。
- 点击 File -> New -> Java Project -> 将项目命名为 MiniBankingApp。
2. 创建包
- 右键点击 src -> New -> Package -> 将其命名为:banking。
3. 创建 Java 类
在 banking 包内,创建以下文件:
- bank.java
- bankManagement.java
- connection.java
项目结构:
4. 添加 MySQL JDBC Connector
- 下载 MySQL JDBC Connector .jar 文件。
- 在你的项目中创建一个名为 lib 的文件夹。
- 将 .jar 文件复制到 lib 文件夹中。
- 右键点击项目 -> Build Path -> Configure Build Path -> Libraries -> Add External JARs -> 选择下载的连接器文件。
第二步:数据库设置
创建名为 bank 的数据库
> CREATE DATABASE BANK;
创建名为 customer 的表
Java
CODEBLOCK_967dfcb3
!outoutput
第三步:创建数据库连接类
这个类用于加载 JDBC 驱动并建立数据库连接。我们将使用 DriverManager.getConnection() 方法,并传入 MySQL 的凭证信息。
connection.java
Java
CODEBLOCK_d148b16d
第四步:业务逻辑类
这个类处理核心操作,例如创建账户和资金转账。为了保证安全,我们将使用 PreparedStatement 来执行参数化查询。
bankmanagment.java
Java
`
package banking;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.sql.*;
public class BankManagement {
private static final int NULL = 0;
static Connection con = Connection.getConnection();
// 创建账户
public static boolean createAccount(String name, int passCode) {
if (name.isEmpty() || passCode == NULL) {
System.out.println("All fields are required!");
return false;
}
try {
String sql = "INSERT INTO customer(cname, balance, pass_code) VALUES (?, 1000, ?)";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, name);
ps.setInt(2, passCode);
int rows = ps.executeUpdate();
if (rows == 1) {
System.out.println("Account created successfully! You can now login.");
return true;
}
} catch (SQLIntegrityConstraintViolationException e) {
System.out.println("Username already exists! Try another one.");
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
// 登录账户
public static boolean loginAccount(String name, int passCode) {
if (name.isEmpty() || passCode == NULL) {
System.out.println("All fields are required!");
return false;
}
try {
String sql = "SELECT * FROM customer WHERE cname = ? AND pass_code = ?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, name);
ps.setInt(2, passCode);
ResultSet rs = ps.executeQuery();
BufferedReader sc = new BufferedRead