(java)數據庫(三)

【JDBCutils】工具類

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);
		}
		
	}

}

 【使用properties配置文件】重寫獲取數據庫連接工具類

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) {}	
		}
	}

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章