java連接數據庫用的DBHelper

import java.io.*;
import java.sql.*;
import java.util.*;
import javax.servlet.jsp.jstl.sql.*;
public class DBHelper {

private String sql; //要傳入的sql語句
public void setSql(String sql) {
this.sql = sql;
}

private List sqlValues; //sql語句的參數
public void setSqlValues(List sqlValues) {
this.sqlValues = sqlValues;
}
private Connection con; //連接對象
public void setCon(Connection con) {
this.con = con;
}

public DBHelper(){
this.con=getConnection(); //給Connection的對象賦初值
}

/**
* 獲取數據庫連接
* @return
*/
private Connection getConnection(){

String driver_class=null;
String driver_url=null;
String database_user=null;
String database_password=null;
try {
InputStream fis=this.getClass().getResourceAsStream("/db.properties"); //加載數據庫配置文件到內存中
Properties p=new Properties();
p.load(fis);

driver_class=p.getProperty("driver_class"); //獲取數據庫配置文件
driver_url=p.getProperty("driver_url");
database_user=p.getProperty("database_user");
database_password=p.getProperty("database_password");


Class.forName(driver_class);
con=DriverManager.getConnection(driver_url,database_user,database_password);


} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con;
}




/**
* 關閉數據庫
* @param con
* @param pst
* @param rst
*/
private void closeAll(Connection con,PreparedStatement pst,ResultSet rst){
if(rst!=null){
try {
rst.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

if(pst!=null){
try {
pst.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

if(con!=null){
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


}

/**
* 查找
* @param sql
* @param sqlValues
* @return
*/
public Result executeQuery(){
Result result=null;
ResultSet rst=null;
PreparedStatement pst=null;
try {

pst=con.prepareStatement(sql);
if(sqlValues!=null&&sqlValues.size()>0){ //當sql語句中存在佔位符時
setSqlValues(pst,sqlValues);
}
rst=pst.executeQuery();
result=ResultSupport.toResult(rst); //一定要在關閉數據庫之前完成轉換

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
this.closeAll(con, pst, rst);
}

return result;
}


/**
* 增刪改
* @return
*/
public int executeUpdate(){
int result=-1;
PreparedStatement pst=null;
try {
pst=con.prepareStatement(sql);
if(sqlValues!=null&&sqlValues.size()>0){ //當sql語句中存在佔位符時
setSqlValues(pst,sqlValues);
}
result=pst.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
this.closeAll(con, pst, null);
}


return result;
}



/**
* 給sql語句中的佔位符賦值
* @param pst
* @param sqlValues
*/
private void setSqlValues(PreparedStatement pst,List sqlValues){
for(int i=0;i<sqlValues.size();i++){
try {
pst.setObject(i+1,sqlValues.get(i));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}


配置文件
文件名:db.properties,放置於src目錄下
文件中的內容如下:
driver_class=com.microsoft.sqlserver.jdbc.SQLServerDriver
driver_url=jdbc\:sqlserver\://localhost\:1433;DataBaseName\=property_DB
database_user=sa
database_password=123456
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章