`

一个依赖配置属性文件管理的JDBC工具类。

阅读更多

自己异想天开做的一个工具类,可以用database.properties管理连接的数据库属性。

 

有两种加载方式,一种是默认加载方式,即默认加载src(即编译后的classes)目录下的database.properties文件,

或者自定义文件,实例化的时候传入URL对象加载。

 

代码如下

/**
 * 此类可以进行不同数据库的连接,操作。<br>
 * 此类有一个带有一个String类型参数的构造方法,用来接收一个字符串作为所连接数据库的标识。并加载驱动<br>
 * 此类不提供任何初默认数据库连接配置,使用需要手动在类加载路径下配置database.propertiesa属性文件。<br>
 * 如果不想在类加载路径下配置database.propertiesa属性文件,可以在实例化的时候传入URL参数进行指定文件初始化。<br>
 * 配置格式如下:<br>
 * driver=oracle.jdbc.driver.OracleDriver<br>
 * url=jdbc:oracle:thin:@127.0.0.1:1521:orcl<br>
 * username=username<br>
 * password=password<br>
 * 每次使用完本类后需要手动调用close()方法关闭所使用的资源.<br>
 * 
 * @version 1.0.0.0
 * @author leaves叶知泉,<a href="http://c5ms.iteye.com/">博客地址c5ms.iteye.com</a>
 * QQ:1330771552
 */
public class JDBConnection {

	/**
	 * 构造方法,只调用init方法,此方法不需要提供属性文件路径,会自动在类加载路径下搜寻database.properties文件,默认即src目录下
	 * 。
	 */
	public JDBConnection() {
		init(null);
	}

	/**
	 * 构造方法,只调用init方法,需要制定加载的属性文件,需要一个URL类型参数 。
	 */
	public JDBConnection(URL databaseURL) {
		init(databaseURL);
	}

	/**
	 * 实例化方法,指定数据库名字,该类会得到属性配置文件里面配置的参数。
	 * 
	 * @param databaseName
	 *            数据库名
	 * @throws Exception
	 */
	private void init(URL databaseURL) {
		URL path;
		Properties prop = new Properties();
		InputStream is;
		if (databaseURL != null) {
			path = databaseURL;
		} else {
			path = ClassLoader.getSystemResource("database.properties");
		}
		if (path == null) {
			try {
				throw new Exception("没有配置属性文件不能构建");
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		try {
			is = new FileInputStream(new File(path.toURI()));
			prop.load(is);
			is.close();
			driver = prop.getProperty("driver");
			url = prop.getProperty("url");
			username = prop.getProperty("username");
			password = prop.getProperty("password");
			Class.forName(driver).newInstance();
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("属性配置读取失败,初始化失败");
			return;
		}
	}

	/**
	 * getConnection()方法会返回一个连接上构造此类时制定的数据库的Connection.
	 * 
	 * @return 目标连接数据库的连接
	 */
	public Connection getConnection() {
		Connection conn = null;
		try {
			conn = DriverManager.getConnection(url, username, password);
		} catch (Exception ee) {
			ee.printStackTrace();
		}
		if (conn == null) {
			System.err.println("警告: DriverManager.getConnection() 获得数据库链接失败.\r\n\r\n链接类型:" + driver + "\r\n链接位置:" + url
					+ "\r\n用户/密码" + username + "/" + password);
		}
		return conn;
	}

	/**
	 * 功能:执行查询语句 executeQuery()方法执行查询语句并且返回一个ResultSet,封装了执行结果。
	 * 
	 * @param sql
	 *            想要执行的sql语句
	 * @param update
	 *            是否返回允许更新的ResultSet
	 * @param objects
	 *            此sql语句需要处理的预编译参量
	 * @return rs 查询结果过对应的ResultSet
	 * 
	 */
	public ResultSet exeQuery(String sql, boolean update, Object... objects) throws SQLException {
		conn = getConnection();
		if (update)
			prestmt = conn.prepareStatement(sql, ResultSet.CONCUR_UPDATABLE, ResultSet.TYPE_SCROLL_INSENSITIVE);
		else
			prestmt = conn.prepareStatement(sql);
		for (int i = 0; i < objects.length; i++) {
			prestmt.setObject(i + 1, objects[i]);
		}
		rs = prestmt.executeQuery();
		return rs;
	}

	/**
	 * 功能:执行查询语句 executeQuery()方法执行查询语句并且返回一个ResultSet,封装了执行结果。
	 * 
	 * @param sql
	 *            要执行的查询语句,此语句是预编译语句。
	 * @return 执行给定查询语句后返回封装了执行结果的ResultSet<br>
	 *         注意:此ResultSet是可滚动但通常不受 ResultSet 底层数据更改影响,并且不可更新的。
	 */
	public ResultSet exeQuery(String sql) {
		try {
			conn = getConnection();
			stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
			rs = stmt.executeQuery(sql);
		} catch (SQLException ex) {
			System.err.println(ex.getMessage());
		}
		return rs;
	}

	/**
	 * 功能:执行更新操作 executeUpdate()方法执行更新语句,并且返回一个int值,包含给定查询所生成数据的 ResultSet 对象
	 * 
	 * @param sql
	 *            要执行的查询语句,此语句是预编译语句
	 * @param objects
	 *            此sql语句需要处理的预编译参量
	 * @return result 包含给定sql语句操作的数据条数,如果执行不成功,则返回0
	 */
	public int exeUpdate(String sql, Object... objects) {
		int result;
		try {
			conn = getConnection();
			prestmt = conn.prepareStatement(sql, ResultSet.CONCUR_READ_ONLY, ResultSet.TYPE_SCROLL_INSENSITIVE);
			for (int i = 0; i < objects.length; i++)
				prestmt.setObject(i + 1, objects[i]);
			result = prestmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
			result = 0;
		}
		return result;

	}

	/**
	 * 功能:执行更新操作 executeUpdate()方法执行更新语句,并且返回一个int值,包含给定查询所生成数据的 ResultSet 对象
	 * 
	 * @return result 包含给定sql语句操作的数据条数,如果执行不成功,则返回0
	 */
	public int exeUpdate(String sql) {
		int result = 0;
		try {
			conn = getConnection();
			stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
			result = stmt.executeUpdate(sql);
		} catch (SQLException ex) {
			result = 0;
		}
		return result;
	}

	/**
	 * 功能:关闭数据库的连接 close()方法关闭所使用的资源.
	 */
	public void close() {
		try {
			if (rs != null)
				rs.close();
			if (prestmt != null)
				prestmt.close();
			if (stmt != null)
				stmt.close();
			if (conn != null)
				conn.close();
		} catch (Exception e) {
		}
	}

	private String driver;
	private String url;
	private String username;
	private String password;

	private Connection conn = null;
	private Statement stmt = null;
	private ResultSet rs = null;
	private PreparedStatement prestmt = null;

}

 属性文件如下:

#######################
###		ORACLE		###
#######################

#driver=oracle.jdbc.driver.OracleDriver
#url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
#username=scott
#password=tiger



#######################
###		MYSQL		###
#######################
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/file
username=root
password=admin
 
分享到:
评论

相关推荐

    spring,配置文件从属性文件读取JDBC连接的相关参数

    Spring提供了一个`Properties`类,可以用来加载和管理属性文件。在Spring配置文件(如`applicationContext.xml`或`beans.xml`)中,我们可以创建一个`Properties` bean来加载`jdbc.properties`: ```xml ...

    Spring依赖包和配置文件

    它提供了一个模板类,如JdbcTemplate,用于执行SQL语句。 4. **Spring ORM**:支持各种ORM框架,如Hibernate、MyBatis等,与JDBC一起,提供了更高级别的数据访问抽象。 5. **Spring MVC**:用于构建Web应用程序的...

    spring JDBC事务管理

    2. **声明式事务管理**:这是Spring的一个强大特性,允许开发者在配置文件或注解中声明事务边界,将事务管理与业务代码分离。Spring支持基于XML的配置和基于注解的事务管理。例如,可以使用`@Transactional`注解标记...

    bboss ioc配置文件中使用外部属性文件介绍

    BBoss是一个轻量级的企业级应用开发框架,提供了IOC(Inversion of Control)功能,使得对象之间的依赖关系可以通过配置文件进行管理。本文将详细介绍如何在BBoss的IOC配置文件中引用外部属性文件,以便更好地管理和...

    JDBC包含德鲁伊配置文件jar包.zip

    配置Druid时,需要创建一个XML或Java配置文件,指定这些属性,以满足应用的需求。 总的来说,这个压缩包为基于Java的数据库应用提供了一整套解决方案,包括连接池、数据库驱动、测试工具和必要的配置文件。开发者...

    Jdbcsupport培训 详细讲解jdbcsupport

    JdbcTemplate是Spring提供的一个强大且灵活的JDBC工具,它包含了许多预定义的数据库操作方法,如update()、query()等,用于执行更新、查询等SQL语句。在上述示例中,通过调用getJdbcTemplate().update()方法,可以...

    mybatis自动生成代码工具,内有2个jar包,一个配置文件

    MyBatis Generator(MBG)是一款强大的代码生成工具,它能够极大地提高开发效率,自动根据数据库表结构生成Java实体类、Mapper接口及XML配置文件,从而减少了手动编写这些基础代码的工作量。本压缩包包含两个关键...

    根据pom.xml下载依赖

    POM(Project Object Model)是Maven的核心概念,它是一个XML文件,包含了项目的基本信息、依赖管理、构建配置等。当我们说“根据pom.xml下载依赖”,实际上是在指Maven如何通过解析项目中的pom.xml文件来获取并安装...

    Spring项目配置文件(整合security、hibernate、fckeditor、jdbc、log4j)

    这个压缩包包含的文件是针对Spring项目中的一些关键组件进行整合的配置,包括Spring Security、Hibernate ORM框架、FCKeditor富文本编辑器、JDBC数据访问层以及日志管理工具Log4j。下面我们将逐一探讨这些组件的配置...

    c3p0连接池配置及封装的工具类包含所需的jar包

    C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。在Java应用程序中,C3P0因其易于配置和良好的性能表现,被广泛应用于各种项目。下面将详细介绍C3P0连接池的配置及其封装...

    hive驱动包hive-jdbc-uber-2.6.5.0-292.jar(用户客户端连接使用)

    Uber JAR的目的是为了方便部署,因为它将所有必需的库合并到一个单一的文件中,避免了类路径冲突的问题,特别适合于像Dbeaver这样的数据库管理工具。 **Hive JDBC驱动**是Apache Hive提供的一种Java数据库连接...

    hibernate工具类大全

    这个“Hibernate工具类大全”压缩包包含了一系列资源,可以帮助开发者更高效地搭建和使用Hibernate框架。以下是对这些资源的详细解释: 1. **jar包**: Hibernate的核心功能依赖于一组jar包,包括`hibernate-core....

    Spring、SpringMVC入门及整合JDBC、Mybatis

    - JDBC:Spring对传统JDBC进行了封装,简化了模板代码和资源管理,提供了一个JdbcTemplate类,用于执行SQL语句、处理结果集等操作。 - Mybatis:Spring通过整合Mybatis,提供了SqlSessionFactoryBean和...

    c3p0连接池及jdbc依赖包.rar

    `mchange-commons-java-0.2.3.4.jar`是c3p0的一个依赖库,它包含了一些通用的工具类和接口,用于支持c3p0的运行。这个库中的一些关键组件可能用于数据源的初始化、配置解析以及异常处理等。 **3. MySQL JDBC驱动** ...

    MyBatis主配置文件

    - **`&lt;mapper&gt;` 标签**:定义一个 SQL 映射文件,通常与一个 Java 接口对应。 - **`&lt;select&gt;`、`&lt;insert&gt;`、`&lt;update&gt;` 和 `&lt;delete&gt;` 标签**:分别用于定义查询、插入、更新和删除的 SQL 语句。 - **`...

    spring-jdbc-RoutingDataSource

    1. 配置RoutingDataSource:首先,你需要创建一个RoutingDataSource实例,并设置其属性`targetDataSources`,这个属性是一个Map,键是你想要的路由标识,值是对应的实际DataSource。 2. 实现LookupKey:为了在运行...

    JavaGUI+JDBC模拟ATM项目

    例如,一个BankAccount类可能会包含余额属性和相应的增减方法;一个ATMMachine类会封装所有的交易逻辑,负责调用JDBC操作数据库,实现上述功能。 【文件结构】 虽然没有提供具体的文件列表,但在一个典型的Java项目...

    jdbc连接池dbcp工具包

    通过连接池,开发者可以预先配置一定数量的数据库连接,这些连接在程序启动时被创建并存储在池中,当需要与数据库交互时,应用程序可以从池中获取一个已经建立好的连接,使用完毕后再归还给池,而不是直接关闭。...

    Python实现读取Properties配置文件的方法

    虽然Python标准库并未直接提供处理此类文件的模块,但我们可以自定义一个类来实现这个功能。本篇文章将详细探讨如何通过Python来读取并解析`.properties`配置文件。 首先,了解`.properties`文件的格式。这种文件...

Global site tag (gtag.js) - Google Analytics