目录
JDBC介绍
- JDBC(Java DataBase Connectivity)就是使用java语言操作关系型数据库的一套API
- java程序通过使用JDBC这套API来对不同关系型数据库进行操作,但是不同数据库底层的实现也存在很大的差异,那么操作方法也不一样,各个厂商提供各自数据库JDBC的实现,最后在编写java项目时,使用面向接口编程,使用JDBC中的提供的接口来操作即可,因为各个厂商提供了各自的数据库底层的JDBC规范的实现(即数据库的驱动)
本质
- sun公司官方定义的一套操作所有关系型数据库的规范,即接口
- 各个数据库厂商去实现这套接口,提供数据库驱动jar包
- 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类
JDBC示例
- 具体代码
-
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JdbcExample { public static void main(String[] args) { // 数据库连接信息 String url = "jdbc:mysql://localhost:3306/mydatabase"; String username = "your-username"; String password = "your-password"; // 声明 JDBC 对象 Connection conn = null; Statement stmt = null; ResultSet rs = null; try { // 连接到数据库 conn = DriverManager.getConnection(url, username, password); // 创建 Statement 对象,用于执行 SQL 语句 stmt = conn.createStatement(); // 执行查询语句 String sql = "SELECT * FROM customers"; rs = stmt.executeQuery(sql); // 处理查询结果 while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); String email = rs.getString("email"); // 输出结果 System.out.println("ID: " + id + ", Name: " + name + ", Email: " + email); } } catch (SQLException e) { e.printStackTrace(); } finally { // 关闭 JDBC 对象 try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } }
- JDBC存在的问题
-
冗余的代码:使用JDBC进行数据库操作涉及大量的样板式代码,例如打开连接、关闭连接、处理异常等。这些重复的代码容易导致冗余和重复劳动,降低开发效率。
-
低级别的接口:JDBC是一个相对底层的接口,需要开发人员自己处理很多细节,如数据库连接管理、事务处理、SQL语句拼接等。这使得开发过程变得复杂,尤其是对于初学者来说。
-
安全性问题:通过JDBC直接将用户输入的值插入SQL语句中容易导致SQL注入攻击。开发人员需要自行处理输入验证和参数化查询,以确保应用程序的安全性。
-
性能问题:JDBC每次数据库操作都需要建立连接、执行查询、处理结果,并在完成后关闭连接。这种连接的创建和销毁过程对性能有一定影响,特别是在频繁的数据库访问场景下。
-
缺乏对象关系映射(ORM)支持:JDBC提供的是一种基于关系型数据库的底层操作接口,对于对象导向编程而言,需要手动将数据结果转化为对象。这增加了开发工作量,并且容易引入错误。
-