JDBC数据库连接工具代码与测试简例

原创 2015年07月09日 23:30:35

</pre>本人学习jdbc时的一点笔记,如有问题,请指点。</h3><p>1.配置文件</p><p></p><pre name="code" class="html">src/jdbc.properties
#Config for MySQL Driver
mysql.url=jdbc:mysql:@192.168.80.150:3306/dbname
mysql.driver=com.mysql.jdbc.Driver
mysql.username=root
mysql.password=null

2.DBUtil工具类代码

DBUtil作为一个工具类,用于封装数据库的连接和关闭过程
  使用properties文件配置数据库连接参数
  利用配置文件保存数据库连接参数,存放位置有两种:
    1:存放在操作系统文件系统路径中(调用类包以外的位置,即使在工程内),使用文件流读取
     2:保存在包中(调用类所在包),使用ClassLoader读取 path="jdbc/jdbc.properties"

import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

import org.apache.commons.dbcp.BasicDataSource;

public class DBUtil {
	//静态方法只能调用静态变量
	private static Properties prop;
	private static String url;
	private static String driverName;
	private static String username;
	private static String password;
	private static BasicDataSource dataSource;
	
	/*
	 * 建立静态代码块,用于读取properties文件,
	 * 在类加载期间执行,保证在静态方法前执行
	 */
	static{
		try {
			//获取ClassLoader对象---类名.class.getClassLoader()
			//调用classLoader.getResourceAsStream(path)方法把文件中的资源打开为一个流

			InputStream in=DBUtil.class.getClassLoader().getResourceAsStream("CloudNote/jdbc.properties");
			prop.load(in);
			driverName=prop.getProperty("mysql.driver");
			url=prop.getProperty("mysql.url");
			username=prop.getProperty("mysql.username");
			password=prop.getProperty("mysql.password");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * 封装数据库的连接过程
	 */
	public Connection createConnection()throws SQLException{
		Connection conn=null;
		/*
		 * 用DriverMagager作为工厂创建connection接口的实例
		 * Class.forName手动的将类名对应的.class文件加载到内存的方法区,而且
		 * com.mysql.jdbc.Driver类中有一个静态代码块会被执行,会将
		 * com.mysql.jdbc.Driver自动注册到DriverManager内部,注册以后,
		 * 就可以用DriverManager调用Oracle驱动了
		 * Class.forName(driver);
	 	 * conn=DriverManager.getConnection(url,username,password);
	 	 */
		/*下面用连接池管理数据库连接
		*接口:javax.sql.DataSource
		*主要方法:Connection getConnection()
		* 得到的Connection对象是可以重复使用的,当调用close方法时,不释放实际的数据库连接,而是归还到连接池,以便再次使用
	 	* DriverManager也提供了Connection getConnection()方法
		*其返回的Connection对象是一次性的,调用close方法的时候,就释放不再使用
		*区别:DataSource是连接池,连接可以被重用,适用于多线程并发访问数据库情况,使数据库连接总数可控,避免了服务器连接过载的情况。
		*                     作为接口,必须使用实现类,必须由第三方达到通用的目的:
		* 			DataSource的常用第三方实现:1 DBCP 是由Apache.org提供
	 	* 											  2 C3P0也是常用的连接池
	 	* 	DriverManager是一次性连接,连接不能被重用,适用于单线程或者线程数很少等很少并发访问数据库的情况下使用。
		*/ 
		try {
			/*
			 * 数据库驱动注册,注册一次即可,如果已经注册,则不起作用
			 */
			Class.forName(driverName);
			//数据完整性检查
			if(dataSource==null){
				dataSource=new BasicDataSource();
			//使用连接池之前必须先初始化数据库连接参数:
				//1 数据库连接参数,将数据库连接的创建功能交给连接池完成
				dataSource.setDriverClassName(driverName);
				dataSource.setUrl(url);
				dataSource.setUsername(username);
				dataSource.setPassword(password);
				// 2 连接池的管理策略参数:连接总数,初始化连接数,最小活动连接数,
				dataSource.setMaxActive(10);
				dataSource.setInitialSize(4);
				dataSource.setMaxIdle(6);
				//得到DBCP连接池提供的连接
				conn=dataSource.getConnection();
			}
			return conn;
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			throw new RuntimeException("驱动错误",e);
		}
	}
	
	/**
	 * 封装关闭连接的方法
	 */
	public static void close(Connection conn){
		if(conn==null){
			return;
		}
		try {
			if(conn.isClosed()){
				return;
			}
			conn.close();
		} catch (SQLException e) {
			// 关闭期间的异常,无法处理,忽略
			e.printStackTrace();
		}
	}
}
3.测试代码

@Test
public void testSql(){
		Connection conn=null;
		/*
		 * 当需要折行书写时,注意要在ename后加一个空格
		 * (不加的话字符串连接后会出现sql语句的书写错误),并使用字符串连接符+
		 */
		String sql="select empno,ename " +
				"from emp_todd ";
		try {
			conn=DBUtil.getConnection();
			/*
			 * 创建Statement对象
		 	* createStatement()创建语句对象
		 	* 实际调用的是mysql驱动的实现的createStatement()方法
		 	* 返回的对象也是mysql驱动实现的对象
		 	*/
			Statement st=conn.createStatement();
			//execueQuery用于执行DQL语句,返回结果ResultSet,内部是一个表格
			//ResultSet的是按照while循环设计的,其内部有一个游标,初始指向第一套记录之前
			ResultSet rs=st.executeQuery(sql);
			while(rs.next()){//调用next()方法会使得游标向后移动,如果记录不为空则返回true
				int empno=rs.getInt("empno");
				String ename=rs.getString("ename");
				System.out.println(empno+"      "+ename);
			}
			rs.close();
			st.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			//必须关闭连接,释放资源
			DBUtil.close(conn);
		}
	}



jdbc成功连接数据库的测试

import java.sql.DriverManager; import java.sql.Connection; import java.sql.PreparedStatement; imp...
  • lengxingxing_
  • lengxingxing_
  • 2017年01月19日 08:29
  • 2763

JDBC数据库连接测试

  • 2015年06月27日 10:51
  • 6KB
  • 下载

jdbc测试oracle数据库的连接是否成功的java代码

jdbc:oracle:thin:@[:]: server:数据库安装的服务器的IP地址,本地用127.0.0.1 或者 localhost database_name:数据库实例名字,不是服务名...
  • wangxiaoguai0114
  • wangxiaoguai0114
  • 2013年03月12日 11:02
  • 2314

JDBC测试工具CTS的使用方法

http://yunpan.cn/cceUemD4RUmq2  访问密码 3675 JDBC(CTS)测试工具的使用方法 在linux32和linux64两个平台验证,可以使用此工具。 测试部署...
  • mingli_a
  • mingli_a
  • 2015年07月23日 12:43
  • 1086

JDBC链接MySql数据库的测试Demo

一.背景介绍  JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Ja...
  • dustasa
  • dustasa
  • 2017年06月07日 17:32
  • 199

简单实现jdbc连接数据库通用工具类(代码)

简单实现jdbc连接数据库通用工具类
  • wang_shuai_long
  • wang_shuai_long
  • 2016年06月21日 20:49
  • 1003

数据库连接测试工具

如何用最快的方法(安装数据库就别提了),在一个环境测试数据库连接?很简单,新建一个txt文档,把后缀从xx.txt改为xx.udl,保存打开后,就可以用账号密码测试连接了...
  • zzy5066
  • zzy5066
  • 2017年10月27日 09:33
  • 186

使用Eclipse自带的工具检测和数据库连接时否成功

1.第一步 找到 Data Source Explorer 并 new 1.1如果没有找到 Data Source Explorer 可根据如图找: 2.第二步 选中自己要连接的数据库 ...
  • w2298119289j
  • w2298119289j
  • 2017年03月09日 17:54
  • 2664

数据库连接测试工具

  • 2017年01月19日 15:55
  • 52KB
  • 下载

sql数据库连接器(测试链接数据库的用户名和密码,可连接远程数据库)

  • 2009年07月23日 10:27
  • 310B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JDBC数据库连接工具代码与测试简例
举报原因:
原因补充:

(最多只允许输入30个字)