# basic-jdbc **Repository Path**: java-lesson/basic-jdbc ## Basic Information - **Project Name**: basic-jdbc - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-06 - **Last Updated**: 2026-04-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Basic JDBC 项目 ## 项目简介 这是一个基础的 Java JDBC(Java Database Connectivity)学习项目,演示了如何使用 JDBC API 连接 MySQL 数据库并执行基本的 CRUD(创建、读取、更新、删除)操作。 ## 技术栈 - **Java**: JDK 26 - **数据库**: MySQL - **JDBC 驱动**: MySQL Connector/J 9.4.0 - **构建工具**: Maven ## 项目结构 ``` basic-jdbc/ ├── src/main/java/ │ ├── connection/ # 数据库连接示例 │ │ ├── BasicJDBC.java # 基础连接方式(手动关闭资源) │ │ └── AutoJDBC.java # 自动资源管理(try-with-resources) │ └── CRUD/ # CRUD 操作示例 │ ├── Create.java # 插入数据 │ ├── Read.java # 查询数据 │ ├── Update.java # 更新数据 │ └── Delete.java # 删除数据 └── pom.xml # Maven 配置文件 ``` ## 环境要求 - JDK 26 或更高版本 - MySQL 数据库(本项目使用 sakila 示例数据库) - Maven 3.x ## 配置说明 ### 数据库连接配置 所有示例都使用以下默认配置: - **主机**: 127.0.0.1 (localhost) - **端口**: 3306 - **数据库**: sakila - **用户名**: root - **密码**: root - **编码**: UTF-8 **注意**: 在实际使用前,请根据您的 MySQL 配置修改连接参数。 ## 运行示例 ### 1. 编译项目 ```bash mvn clean compile ``` ### 2. 运行各个示例 ```bash # 运行基础连接示例 mvn exec:java -Dexec.mainClass="connection.BasicJDBC" # 运行自动资源管理示例 mvn exec:java -Dexec.mainClass="connection.AutoJDBC" # 运行 CRUD 操作 mvn exec:java -Dexec.mainClass="CRUD.Create" mvn exec:java -Dexec.mainClass="CRUD.Read" mvn exec:java -Dexec.mainClass="CRUD.Update" mvn exec:java -Dexec.mainClass="CRUD.Delete" ``` ## 功能说明 ### 数据库连接 #### BasicJDBC.java 展示了传统的 JDBC 连接方式,需要手动在 finally 块中关闭 Statement 和 Connection 资源。 #### AutoJDBC.java 展示了使用 try-with-resources 语句的现代化方式,自动管理资源关闭,代码更简洁安全。 ### CRUD 操作 #### Create.java 向 actor 表插入新记录,演示 INSERT 操作。 #### Read.java 从 actor 表查询所有记录,演示 SELECT 操作和 ResultSet 遍历。 #### Update.java 更新 actor 表中的记录,演示 UPDATE 操作。 #### Delete.java 从 actor 表中删除记录,演示 DELETE 操作。 ## 已知问题和改进建议 ### ⚠️ 安全问题 - **SQL 注入风险**: 所有示例都使用 Statement 拼接 SQL,存在 SQL 注入风险。建议使用 PreparedStatement。 - **硬编码凭证**: 数据库用户名和密码直接写在代码中,应使用配置文件或环境变量。 ### 🔧 代码质量问题 - **异常处理不当**: - 捕获异常后仅打印堆栈,没有合理的错误处理 - BasicJDBC 中直接抛出 RuntimeException,会导致程序崩溃 - **资源泄漏风险**: BasicJDBC 的资源关闭方式较为繁琐且容易出错 - **缺少返回值验证**: execute() 方法的返回值未被检查 ### 💡 最佳实践建议 - **缺少事务管理**: 对于写操作,应该考虑事务管理 - **硬编码 SQL**: SQL 语句应该外部化到配置文件 - **缺少日志框架**: 使用 System.out.println 和 printStackTrace,建议使用 SLF4J + Logback ## 改进方向 - 使用 PreparedStatement 防止 SQL 注入 - 引入配置文件管理数据库连接参数 - 添加适当的日志记录 - 实现连接池(如 HikariCP) - 添加单元测试 - 使用 ORM 框架(如 MyBatis 或 JPA/Hibernate) ## 许可证 本项目仅用于学习和教育目的。 ## 联系方式 如有问题或建议,欢迎提出 Issue。