连接数据库的工具类:
package com.zlk.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.zlk.util.EnvironmentConfig;
public class DBConnection {
private static DBConnection conn = null;
private static String DB_PROPERTIES="/com/zlk/config/db.properties";
private static EnvironmentConfig ec = EnvironmentConfig.getInstance();
private static String DRIVER_CLASS_NAME = ec.getPropertyValue(DB_PROPERTIES, "db.jdbc.driverClassName");
private static String URL = ec.getPropertyValue(DB_PROPERTIES, "db.jdbc.url");
private static String USERNAME = ec.getPropertyValue(DB_PROPERTIES, "db.jdbc.username");
private static String PASSWORD= ec.getPropertyValue(DB_PROPERTIES, "db.jdbc.password");
/**
* 私有构造函数,加载连接驱动
*/
private DBConnection(){
try {
Class.forName(DRIVER_CLASS_NAME);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("连接驱动未找到..............");
e.printStackTrace();
}
}
/**
* 实例化类对象
*/
public static DBConnection getInstance(){
if(conn == null){
return new DBConnection();
}
return conn;
}
/**
* 创建数据库连接
*/
public Connection getConnection() throws SQLException{
return DriverManager.getConnection(URL,USERNAME,PASSWORD);
}
/**
* 释放资源
*/
public void release(Connection conn, PreparedStatement ps,ResultSet rs) {
if (rs != null)try {rs.close();} catch (SQLException e) {e.printStackTrace();}
if (ps != null) try {ps.close();} catch (SQLException e) {e.printStackTrace();}
if (conn!= null)try {conn.close();} catch (SQLException e) {e.printStackTrace();}
}
/**
* 释放资源
*/
public void release(Object obj) {
if (obj instanceof Connection) {
Connection conn = (Connection) obj;
if (conn != null)
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (obj instanceof PreparedStatement) {
PreparedStatement ps = (PreparedStatement) obj;
if (ps != null)
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (obj instanceof ResultSet) {
ResultSet rs = (ResultSet) obj;
if (rs != null)
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
读取资源文件的工具类:
package com.zlk.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Hashtable;
import java.util.Properties;
/**
* java 读取配置(属性)文件
* @author Billows.Van
* billows.van@gmail.com
*/
public class EnvironmentConfig {
static EnvironmentConfig ec;// 创建对象ec
private static Hashtable<String, Properties> register = new Hashtable<String, Properties>();// 静态对象初始化[在其它对象之前]
private EnvironmentConfig() {
super();
}
/**
* 取得EnvironmentConfig的一个实例
*/
public static EnvironmentConfig getInstance() {
if (ec == null)
ec = new EnvironmentConfig();// 创建EnvironmentConfig对象
return ec;// 返回EnvironmentConfig对象
}
/**
* 读取配置文件
*/
public Properties getProperties(String fileName) {// 传递配置文件路径
InputStream is = null;// 定义输入流is
Properties p = null;
try {
p = (Properties) register.get(fileName);// 将fileName存于一个HashTable
/**
* 如果为空就尝试输入进文件
*/
if (p == null) {
try {
is = new FileInputStream(fileName);// 创建输入流
} catch (Exception e) {
if (fileName.startsWith("/"))
// 用getResourceAsStream()方法用于定位并打开外部文件。
is = EnvironmentConfig.class.getResourceAsStream(fileName);
else
is = EnvironmentConfig.class.getResourceAsStream("/"+fileName);
}
p = new Properties();
p.load(is);// 加载输入流
register.put(fileName, p);// 将其存放于HashTable缓存
is.close();// 关闭输入流
}
} catch (Exception e) {
e.printStackTrace(System.out);
}
return p;// 返回Properties对象
}
/**
* 此处插入方法描述。
*/
public String getPropertyValue(String fileName, String strKey) {
Properties p = getProperties(fileName);
try {
return (String) p.getProperty(strKey);
} catch (Exception e) {
e.printStackTrace(System.out);
}
return null;
}
/**
* 修改配置文件的值
*/
public void setPropertyValue(String fileName,String strKey,String StrValue){
Properties p = getProperties(fileName);
OutputStream os = null;
try {
if(p!=null){
File file = new File(this.getClass().getResource("/").getPath().replace("%20", " "));//找到指定目录,其中路径中的“%20”用空格代替
file = new File(file.getPath()+fileName);//找到指定文件
os = new FileOutputStream(file);
p.setProperty(strKey, StrValue);
p.store(os, "Last Modified");
}
} catch (Exception e) {
e.printStackTrace(System.out);
}finally{
try {
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 重载资源文件
*/
public void reloadProterties(){
this.register.clear();
}
}
资源文件:
db.jdbc.driverClassName=com.microsoft.jdbc.sqlserver.SQLServerDriver
db.jdbc.url=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test
db.jdbc.username=sa
db.jdbc.password=sa
分享到:
相关推荐
本资源集合了常用的JDBC数据库连接jar包,以及一些知名的数据库连接池实现,如dbcp和c3p0,这对于开发人员来说是非常宝贵的资源。 首先,让我们了解一下JDBC。JDBC提供了一套标准的API,包括接口和类,使得开发者...
在实际开发中,我们经常需要通过配置文件来管理数据库连接信息,以实现灵活的数据库连接管理,避免硬编码,提高代码的可维护性和可扩展性。 1. **配置文件类型** 常见的配置文件格式有XML、properties或JSON等。...
总的来说,Java JDBC数据库连接池是提升Web应用性能的重要技术,通过有效的连接管理和复用,它降低了数据库操作的开销,提升了系统的稳定性和响应速度。在开发过程中,选择合适的连接池实现,并对其进行合理配置,是...
通过分析和学习这个“jdbc数据库连接池工程文件”的“demo”,开发者能够掌握如何在实际项目中集成和使用数据库连接池,提升应用的性能和稳定性。同时,理解连接池的工作原理有助于进行更高效的数据库操作和问题排查...
4. **数据库连接方法.mht** MHT文件是一种单个文件存储网页的格式,可能包含了如何使用JDBC连接数据库的网页教程,包括HTML代码示例和步骤解释。 5. **常用数据库JDBC连接写法.txt** 这个文本文件很可能包含了...
- **单例模式**:为了确保每次获取的都是同一个数据库连接对象,这里使用了单例模式来创建`ConnectionTest`类的对象。 - **加载驱动**:使用`Class.forName()`方法加载Oracle JDBC驱动。 - **建立连接**:通过`...
以下是对给定文件中提到的JDBC数据库连接模板代码的知识点详细解析。 ### JDBC概念 JDBC是一种用于执行SQL语句的Java API,它由一组用Java语言编写的类和接口组成。通过JDBC,开发者可以将SQL语句发送到几乎任何...
然后,需要获取PostgreSQL的JDBC驱动,这通常是一个名为`postgresql-jdbc.jar`的文件。将这个JAR文件添加到项目的类路径中,以便在Java程序中使用。 以下是一个简单的JDBC连接到PostgreSQL数据库并获取数据的步骤:...
通过JDBC,开发者可以编写与数据库无关的代码,因为JDBC提供了统一的API来执行SQL语句、管理数据库连接和处理结果集。 Oracle JDBC驱动分为多个版本,如ojdbc14、ojdbc6、ojdbc7等,每个版本对应不同的Java和Oracle...
1. **增强安全性**:避免在代码中硬编码数据库连接信息,而是通过外部配置文件或环境变量传递这些敏感信息。 2. **资源管理**:确保所有打开的数据库连接、语句和结果集都在使用完毕后被正确关闭,避免资源泄漏。 3....
本示例将详细讲解如何使用JDBC通过文件读取方式来加载数据库连接配置,以MySQL数据库为例。 首先,我们需要明白JDBC连接数据库的基本步骤: 1. 加载驱动:Java应用程序需要加载相应的数据库驱动,例如MySQL的JDBC...
本示例展示了如何使用JDBC连接Oracle数据库,通过Apache Commons DBCP库实现数据库连接池来提高性能和资源管理。 首先,让我们了解关键类和方法: 1. `BaseDAO` 类:这是基础数据访问对象类,它封装了与数据库交互...
"mysql-connector"部分表明这是与MySQL数据库交互的,而"bin.jar"通常表示这是一个可执行的JAR文件,其中包含用于数据库连接的二进制代码。 使用JDBC连接MySQL数据库的步骤大致如下: 1. **添加驱动依赖**:将`...
通过以上步骤,你可以全面了解JDBC数据库连接池的实现原理,以及如何在实际项目中有效地使用和配置它。在实践中,结合Oracle数据库的特性和JDBC API,可以更好地优化数据库操作,提升系统的稳定性和效率。
6. 关闭资源:使用完数据库连接后,记得关闭`ResultSet`、`Statement`和`Connection`,避免资源泄漏。 除了基本的JDBC操作,达梦数据库还提供了诸如事务管理、预编译语句、批处理等功能,这些都可以通过JDBC接口...
本篇文章将详细介绍如何在MyEclipse中使用JDBC(Java Database Connectivity)来建立数据库连接,以及如何执行基本的CRUD(创建、读取、更新、删除)操作。 首先,我们需要理解JDBC的概念。JDBC是Java平台的标准...
总结来说,Java JDBC数据库连接池是解决Web应用中数据库访问性能问题的有效工具,通过统一管理和复用数据库连接,降低了系统资源消耗,提高了应用的响应速度和稳定性。合理配置和使用连接池,对于构建高效、稳定的...
通过以上详细的介绍和示例代码,我们不仅了解了JDBC的基本原理和核心组件,还掌握了如何使用JDBC进行数据库连接和文件配置的具体步骤。这对于Java开发者来说,是进行数据库操作时不可或缺的知识点。