JDBC数据库操作通用类

### JDBC数据库操作通用类知识点详解 #### 一、概述 JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC API既支持数据库访问的高级抽象,也保留了对数据库的具体功能的支持。本文将基于提供的“JDBC数据库操作通用类”代码片段,深入探讨其设计原理及实现细节。 #### 二、代码结构解析 ##### 1. 类定义与成员变量 ```java public class JDBConnection { public Connection conn = null; // Connection实例 public Statement stmt = null; // Statement实例 public ResultSet rs = null; // ResultSet实例 private static String dbClassName = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; // 数据库驱动类名 private static String dbUrl = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=DB_ATM"; private static String dbUser = "sa"; private static String dbPwd = "sa"; ``` - **成员变量**:`conn`、`stmt` 和 `rs` 分别代表连接、语句和结果集的对象实例。 - **静态变量**:`dbClassName` 存储了数据库驱动类的名字;`dbUrl` 存储了数据库连接URL;`dbUser` 和 `dbPwd` 分别存储了数据库用户名和密码。 ##### 2. 构造函数 ```java public JDBConnection(String propertyFileName) { Properties prop = new Properties(); // 创建Properties对象 InputStream is = null; try { is = JDBConnection.class.getClassLoader().getResourceAsStream(propertyFileName); // 加载属性文件 prop.load(is); // 读取属性文件内容到Properties对象 is.close(); dbClassName = prop.getProperty("dbClassName"); dbUrl = prop.getProperty("dbUrl"); dbUser = prop.getProperty("dbUser"); dbPwd = prop.getProperty("dbPwd"); } catch (Exception e) { System.out.println("加载" + propertyFileName + "失败"); } try { Class.forName(dbClassName); // 注册数据库驱动 } catch (ClassNotFoundException e) { e.printStackTrace(); } } ``` - **构造函数**:通过指定的属性文件名称来加载数据库配置信息,并注册数据库驱动。 ##### 3. getConnection 方法 ```java public static Connection getConnection() { Connection conn = null; try { conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd); // 获取数据库连接 } catch (Exception ee) { ee.printStackTrace(); } if (conn == null) { System.err.println("DbConnectionManager.getConnection()获取连接失败.\r\n\r\n:" + dbClassName + "\r\n地址:" + dbUrl + "\r\n用户名/" + dbUser + "/" + dbPwd); } return conn; } ``` - **getConnection 方法**:根据数据库配置信息创建并返回一个数据库连接。 ##### 4. executeQuery 方法 ```java public ResultSet executeQuery(String sql) { try { conn = getConnection(); // 调用getConnection方法获取数据库连接 stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); rs = stmt.executeQuery(sql); // 执行SQL查询语句 } catch (SQLException ex) { System.err.println(ex.getMessage()); // 输出异常信息 } return rs; // 返回结果集 } ``` - **executeQuery 方法**:执行SQL查询语句,并返回结果集。 #### 三、关键知识点分析 1. **使用Properties加载配置文件**:在Java中,经常需要通过配置文件来管理程序中的常量或动态参数。这里通过`Properties`类加载了一个外部的`.properties`文件,该文件包含了数据库的相关配置信息。 2. **注册和获取数据库连接**:首先通过`Class.forName()`方法注册了特定的数据库驱动,然后使用`DriverManager.getConnection()`方法根据配置信息获取数据库连接。 3. **执行SQL查询**:通过`Statement`对象执行SQL查询,并通过`ResultSet`对象处理查询结果。 4. **异常处理**:代码中通过`try-catch`块来捕获并处理可能发生的异常,确保程序的健壮性和可靠性。 #### 四、应用建议 1. **增强安全性**:避免在代码中硬编码数据库连接信息,而是通过外部配置文件或环境变量传递这些敏感信息。 2. **资源管理**:确保所有打开的数据库连接、语句和结果集都在使用完毕后被正确关闭,避免资源泄漏。 3. **异常处理**:除了基本的异常捕获外,还应考虑更全面的异常处理策略,比如重试机制等。 4. **性能优化**:对于频繁执行的SQL查询,可以考虑使用PreparedStatement对象来提高性能。 5. **跨数据库兼容性**:虽然这个示例是针对特定的数据库(如Microsoft SQL Server),但在实际开发中,应尽量采用标准的JDBC API来提高代码的可移植性和兼容性。




















import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class JDBConnection {
public Connection conn = null; // 声明Connection对象的实例
public Statement stmt = null; // 声明Statement对象的实例
public ResultSet rs = null; // 声明ResultSet对象的实例
private static String dbClassName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";//定义保存数据库驱动的变量
private static String dbUrl = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=DB_ATM";
private static String dbUser = "sa";
private static String dbPwd = "sa";
public JDBConnection(String propertyFileName) {// 带属性文件名的构造方法
Properties prop = new Properties();// 属性集合对象
InputStream is = null;
try {
is = JDBConnection.class.getClassLoader().getResourceAsStream(
propertyFileName);// 属性文件输入流
// is = new FileInputStream("src/" + propertyFileName);
prop.load(is);// 将属性文件流装载到Properties对象中
is.close();// 关闭流
dbClassName = prop.getProperty("dbClassName");
dbUrl = prop.getProperty("dbUrl");

- 懒过四级2013-12-11代码写得很好,减少了我很工作时间
- gl106gl2013-06-27类中异常处理有些问题,不过还行!可以用

- 粉丝: 18
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源


