(java)数据库(三)自定义JDBC工具

【JDBCutils】工具类

         自己写JDBCUtils类  定义静态方法  1.获取数据库连接对象   2. 关闭资源方法

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/*
 *   实现JDBC的工具类
 *   定义方法直接返回数据库的连接对象
 *   定义关闭资源的方法
 */
public class JDBCutils {
	private JDBCutils(){}
	private static Connection con;
	
	static{
		try{
		    // 1. 注册驱动
            Class.forName("com.mysql.jdbc.Driver");
		    // 2. 获得数据连接
			String url = "jdbc:mysql://localhost:3306/mybase1";
			String user = "root";       // 数据库账户
			String password = "123";    // 数据库密码
			con = DriverManager.getConnection(url, user, password);	
		}catch(Exception ex){
			throw new RuntimeException(ex+"数据库连接失败");
		} 
	}
	
	 // 定义静态方法,返回数据库的连接对象
	public static Connection getConnection(){
		return con;
	}
	
	// 定义关闭方法
	public static void close(Connection con, Statement stat, ResultSet pst){
		if(con !=null){
			try {
				con.close();
			} catch (SQLException ex) {}	
		}
		
		if(con !=null){
			try {
				stat.close();
			} catch (SQLException ex) {}	
		}
		
		if(con !=null){
			try {
				pst.close();
			} catch (SQLException ex) {}	
		}
	}
	// 关闭方法重载
	public static void close(Connection con, Statement stat){
		if(con !=null){
			try {
				con.close();
			} catch (SQLException ex) {}	
		}
		
		if(con !=null){
			try {
				stat.close();
			} catch (SQLException ex) {}	
		}
	}

}
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/*
 *     使用JDBCutils工具类,
 */
public class JDBCTest1 {
	public static void main(String[] args) throws Exception {
		
		// 调用JDBCutils工具类方法getConection() 获得数据库连接对象
		Connection con = JDBCutils.getConnection();
		// 调用数据库的连接对象con的方法prepareStatement() 对SQL语句进行预编译
		PreparedStatement pst = con.prepareStatement("SELECT * FROM sort1");
		// 调用pst方法executeQuery()执行SQL语句
		ResultSet rs = pst.executeQuery();
		// 对结果对象进行处理
		while(rs.next()){
			System.out.println(rs.getString("sid")+" "+rs.getString("sname")+" "+rs.getString("sprice")
					+" "+rs.getString("sdesc"));
		}
		// 关闭资源
		JDBCutils.close(con, pst, rs);
	}

}

 【数据表结果集放入集合中】

/*
 *    数据表Sort1   对应java中Sort类
 *    数据表中的列名 sid sname  sprice sdesc  对应java中的Sort类的成员变量
 */
public class Sort {
	private int sid;
	private String sname;
	private double sprice;
	private String sdesc;
	
	// 构造方法
	public Sort(){}
	public Sort(int sid, String sname, double sprice, String sdesc) {
		this.sid = sid;
		this.sname = sname;
		this.sprice = sprice;
		this.sdesc = sdesc;
	}
	
	// getXX,setXX方法
	public int getSid() {
		return sid;
	}
	public void setSid(int sid) {
		this.sid = sid;
	}
	public String getSname() {
		return sname;
	}
	public void setSname(String sname) {
		this.sname = sname;
	}
	public double getSprice() {
		return sprice;
	}
	public void setSprice(double sprice) {
		this.sprice = sprice;
	}
	public String getSdesc() {
		return sdesc;
	}
	public void setSdesc(String sdesc) {
		this.sdesc = sdesc;
	}

	@Override
	public String toString() {
		return "Sort [sid=" + sid + ", sname=" + sname + ", sprice=" + sprice
				+ ", sdesc=" + sdesc + "]";
	}
}
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/*
 *   读取表sort,将每行的数据封装到Sort类的对象中
 *   很多个Sort类对象,存储到List集合中去
 */
public class JDBCTest2 {
	public static void main(String[] args) throws Exception {
		// 调用JDBCutils工具类方法getConection() 获得数据库连接对象
		Connection con = JDBCutils.getConnection();
		// 调用数据库的连接对象con的方法prepareStatement() 对SQL语句进行预编译
		PreparedStatement pst = con.prepareStatement("SELECT * FROM sort1");
		// 调用pst方法executeQuery()获取结果集
		ResultSet rs = pst.executeQuery();
		
		// 创建集合对象
		List<Sort> list = new ArrayList<Sort>();
		
		while(rs.next()){
			// 获取每个列数据,封装到Sort对象中
			Sort s = new Sort(rs.getInt("sid"), rs.getString("sname"), rs.getDouble("sprice"), rs.getString("sdesc"));
			list.add(s);
		}
		JDBCutils.close(con, pst,rs);
		// 遍历List集合
		for(Sort l:list){
			System.out.println(l);
		}
	}
}
/* 打印
Sort [sid=1, sname=家电, sprice=3000.0, sdesc=厂家促销]
Sort [sid=2, sname=家具, sprice=8900.0, sdesc=家具价格上调]
Sort [sid=3, sname=儿童玩具, sprice=300.0, sdesc=销量火爆]
. . . . . .
*/

 【使用properties配置文件】

     开发中获得连接的4个参数,(驱动   URL   用户名   密码)通常都存储在配置文件中,方便后期维护,如果程序需要更换数据库,只需要修改配置文件即可。通常情况下使用properties文件配置文件:

文件位置:建议放在src下(使用类的加载器加载 文件);文件名称:文件后缀为properties ;文件内容:一行一组数据,格式是“key=value”

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/*
 *   编写JDBC的工具类,获取数据库的连接
 *      采用读取配置文件Properties的方式
 *      读取配置文件,获取  driverClass url username password 信息     只需执行一次   可以放到static{}中去
 *      
 *      "database.properties"文件中的内容:
 *           driverClass=com.mysql.jdbc.Driver
 *           url=jdbc:mysql://localhost:3306/mybase1
 *           username=root
 *           password=123  
 */
public class JDBCutilsProperties {
	private static Connection con;
	private static String driverClass;
	private static String url;
	private static String username;
	private static String password;
	
	static{
		try{
			// 使用类的加载器	
			InputStream in =JDBCutilsProperties.class.getClassLoader().getResourceAsStream("database.properties");
			
			Properties pro = new Properties();
			pro.load(in);
			
			// 获得集合中的键值对
			driverClass = pro.getProperty("driverClass");
			url         = pro.getProperty("url");
			username    = pro.getProperty("username");
			password    = pro.getProperty("password");
			
			Class.forName(driverClass);
			con = DriverManager.getConnection(url,username,password);
		}catch(Exception ex){
			throw new RuntimeException(ex+"数据库连接失败");
		}
	}
	
	// 定义静态方法,返回数据库的连接对象
	public static Connection getConnection(){
		return con;
	}

	// 定义关闭方法
	public static void close(Connection con, Statement stat, ResultSet pst){
		if(con !=null){
			try {
				con.close();
			} catch (SQLException ex) {}	
		}
			
		if(con !=null){
			try {
				stat.close();
			} catch (SQLException ex) {}	
		}
			
		if(con !=null){
			try {
				pst.close();
			} catch (SQLException ex) {}	
		}
	}
		// 关闭方法重载
	public static void close(Connection con, Statement stat){
		if(con !=null){
			try {
				con.close();
			} catch (SQLException ex) {}	
		}
			
		if(con !=null){
			try {
				stat.close();
			} catch (SQLException ex) {}	
		}
	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值