JDBC鏈接數據庫

/*
 * 功能:這個直接對數據庫操做的工具類
 * 做者:施爺
 * 時間:2017-3-17
 * 
 */
package com.shi.util;
import java.io.*;
import java.sql.*;
import java.util.ArrayList;
import java.util.Properties; //這個包不要導錯了 否則會出現pp.load();沒這個放法


public class SQLHellp {
	
	//定義須要的變量
	private Connection ct=null;
	private PreparedStatement ps=null;
	private ResultSet rs=null;
	private String driver=null;
	private String url="";
	private String user="";
	private String password="";
	private Properties pp=null;
	private FileInputStream fis=null;
	private InputStream is=null;
	
	//用於快速讀取文件 以即加載驅動 的 方法
	public void Driver(){		
		try {
			//讀取配置文件
			pp=new Properties();	
			//這是類加載器的方式   儘可能使用類加載器的方法加載驅動
			is=SQLHellp.class.getClassLoader().getResourceAsStream("com/shi/util/dbinfo.properties");
			//fis=new FileInputStream("dbinfo.properties");
			pp.load(is);
			driver=pp.getProperty("driver");
			url=pp.getProperty("url");
			user=pp.getProperty("user");
			password=pp.getProperty("password");
			
			//加載驅動
			Class.forName(driver);
			//System.out.println("加載驅動成功");

		} catch (Exception e) {			
			e.printStackTrace();
		}finally{
			try {
				//fis.close();
				is.close();
			} catch (IOException e) {			
				e.printStackTrace();
			}
			//fis=null;//再次讓系統回收
			is=null;
		}				
	}
	
	//獲得鏈接的方法
	public Connection getConnection(){
		try {
			ct=DriverManager.getConnection(url,user,password);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return ct;
	}
	
	//查詢方法
	public ArrayList executeQuery(String sql,String [] preparments){
		ArrayList al=new ArrayList();
		//1加載驅動
		this.Driver();
		//2獲得鏈接
		ct=this.getConnection();
		//System.out.println("獲得鏈接成功");
		try {
			ps=ct.prepareStatement(sql);
			//System.out.println("準備成功");
			//循環的給變量賦值
			if(preparments!=null){
				for(int i=0;i<preparments.length;i++){
					ps.setString(i+1, preparments[i]);
				}
			}
			//執行查詢 獲得結果
			rs=ps.executeQuery();
			
			//對結果集進行二次封裝
			ResultSetMetaData rsmd=rs.getMetaData();
			int count=rsmd.getColumnCount();//這裏你能夠獲得你查詢的語句中有幾列			
			while(rs.next()){
				Object[] ob=new Object[count];//作一個對象數組 把一行數據封裝到一個對象數組中
				for(int i=0;i<count;i++){
					ob[i] = rs.getObject(i+1);
				}
				//System.out.println("sqlhellp.name"+ob[1].toString());
				al.add(ob);
			}						
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			//關閉資源
			this.Close(ct, ps, rs);
		}
		return al;
	}
	
	//增,刪,改,方法
	public Boolean executeUpdate(String sql,String [] preparments){
		boolean b= true; //默認是成功的  
		//1加載驅動
		this.Driver();
		//2獲得鏈接
		ct=this.getConnection();		
		try {
			//準備  給參數賦值 
			ps=ct.prepareStatement(sql);
			for(int i=0;i<preparments.length;i++){
				ps.setString(i+1, preparments[i]);				
			}
			//執行 
			ps.executeUpdate();
					
		} catch (SQLException e) {
			b=false;			
			e.printStackTrace();
		}finally{
			this.Close(ct, ps, rs);			
		}		
		return b;
	}
	
	//關閉資源
	public void Close(Connection ct,Statement ps,ResultSet rs){
		if(rs!=null){
			try {
				rs.close();
			} catch (SQLException e) {				
				e.printStackTrace();
			}
			rs=null;
		}
		if(ps!=null){
			try {
				ps.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			ps=null;//再次讓系統回收
		}
		if(ct!=null){
			try {
				ct.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			ct=null;//再次讓系統回收
		}
		
	}
	
}

配置文件 dbinfo.propertiesjava

driver=com.mysql.jdbc.Driver
url=jdbc\:mysql\://localhost\:3306/users?useUnicode\=true&amp;characterEncoding\=utf-8
user=root
password=123456
相關文章
相關標籤/搜索