import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* 資料庫連接類
*/
public class BaseDao {
//2005的驅動串連
//com.microsoft.sqlserver.jdbc.SQLServerDriver
//jdbc:sqlserver://localhost:1433;databasename=company
// 2000的驅動串連
//com.microsoft.jdbc.sqlserver.SQLServerDriver
//jdbc:microsoft:sqlserver://localhost:1433;databasename=company
//資料庫驅動
private final static String DRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver";
// URL
private final static String URL="jdbc:sqlserver://localhost:1433;DataBaseName=databaseName";
//資料庫使用者名稱
private final static String DBNAME="sa";
//資料庫密碼
private final static String DBPASS="sa";
/**
* 得到資料庫連接
* @return 資料庫連接
* @throws ClassNotFoundException
* @throws SQLException
*/
public static Connection getConn() throws ClassNotFoundException,SQLException{
Class.forName(DRIVER); //註冊驅動
Connection conn=DriverManager.getConnection(URL,DBNAME,DBPASS);
return conn;
}
/**
* 關閉資料庫相關串連
* @param conn
* @param pstmt
* @param rs
*/
public static void closeAll(Connection conn,PreparedStatement pstmt,ResultSet rs){
/*如果rs不空,關閉rs*/
if(rs!=null){
try{
rs.close();
}catch(SQLException e){
e.printStackTrace();
}
}
/*如果pstmt不空,關閉pstmt*/
if(pstmt!=null){
try{
pstmt.close();
}catch(SQLException e){
e.printStackTrace();
}
}
/*如果conn不空,關閉conn*/
if(conn!=null){
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
/**
* 執行SQL語句,可以進行增、刪、改、的操作,不能執行查詢
* @param preparedSql 先行編譯的 SQL 陳述式
* @param param 先行編譯的SQL語句中的'?'參數的字串數組
* @return 影響的條數
*/
public static int executeSQL(String preparedSql,String[] param){
Connection conn=null;
PreparedStatement pstmt=null;
int num=0;
/*處理SQL,執行SQL*/
try{
conn=getConn(); //得到資料庫連接
pstmt=conn.prepareStatement(preparedSql);
if(param!=null){
for(int i=0;i<param.length;i++){
pstmt.setString(i+1, param[i]); //設定參數
}
}
num=pstmt.executeUpdate(); //執行SQL語句
}catch(ClassNotFoundException e){
e.printStackTrace(); //處理ClassNotFountException異常
}catch(SQLException e){
e.printStackTrace(); //處理SQLException異常
}finally{
closeAll(conn,pstmt,null); //釋放資源
}
return num;
}
}