❶ java如何關閉資料庫連接呢
沒異常,不過浪費資源,占著坑不拉,執行完一次資料庫交互就要關閉一次
try{
sql...
}catch(...){
//異常信息
}finally{
rs.close();
stmt.close();
conn.close();
//關鏈接,釋放資源
}
樓主說的關了不能執行肯定是把結果集返回,這樣編程不行的,因為在上述操作中結果集已經關了,再返回就是空了,我們應該把數據返回,在
try{
list.add{rs.getObject(1)};
///
}
把數據裝在list裡面,返回list
❷ myeclipse中使用select語句查詢mysql中的漢字,就是查不出來,也沒有亂碼,單獨操作資料庫時能查出來
老兄啊 當然有問題啦
Connection conn=DBUtil.getConnection();
PreparedStatement ps;
String sql="select * from department where dept_name like '%"+name+"%'";
ps = conn.prepareStatement(sql);
System.out.println("sql---"+sql);
ResultSet rs=ps.executeQuery();
System.out.println(rs);
while(rs.next()){
在這里你使用了預編譯prepareStatement,但在在寫SQL語句的時候你又用了字元串拼接,如果 你要使用字元串拼接,那麼你就直接將這個查詢的操作寫到一個方法裡面,然後將name的值當作參數傳遞進來。如果你想使用預編譯,這里你就應該將name寫成?,然後用ps.set(1,value)。我分析你的原因就是,你用了預編譯卻沒有用set()方法賦值,用了字元串拼接卻沒有參name的值進來,最後like '%"+name+"%'"中的name始終是空的,所以查詢不到結果!
❸ 怎樣用myelipsel連接mysql 請各位前輩 指點指點
你先下個資料庫驅動mysql-connector-java-5.1.7-bin.jar版本自己看
加到你的工程里
然後連資料庫都是固定的步驟
加驅動,建立連接,語句,執行,結果,關閉。。。
參考
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBUtil {
// public final static String DRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; // 資料庫驅動
// public final static String URL = "jdbc:microsoft:sqlserver://localhost:1433;DataBaseName=bbs"; // url
// public final static String DBNAME = "sa"; // 資料庫用戶名
// public final static String DBPASS = "sa"; // 資料庫密碼
private static Connection conn=null;
private static Statement statement=null;
private static ResultSet rs=null;
private static String DRIVER = "com.mysql.jdbc.Driver";
// 設置url,注意連接的是哪一個資料庫
private static String URL = "jdbc:mysql://localhost:3306/caiwu?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8";
public final static String DBNAME = "root"; // 資料庫用戶名
public final static String DBPASS = "admin";
/**
* 得到資料庫連接
* @throws ClassNotFoundException
* @throws SQLException
* @return 資料庫連接
*/
public static Connection getConn() throws ClassNotFoundException, SQLException{
Class.forName(DRIVER); //注冊驅動
Connection conn = DriverManager.getConnection(URL,DBNAME,DBPASS); //獲得資料庫連接
return conn ; //返回連接
}
/**
* 釋放資源
* @param conn 資料庫連接
* @param pstmt PreparedStatement對象
* @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 sql 預編譯的 SQL 語句
* @param param 預編譯的 SQL 語句中的『?』參數的字元串數組
* @return 影響的條數
*/
public int executeSQL(String preparedSql,String[] param) {
Connection conn = null;
PreparedStatement pstmt = null;
int num = 0;
/* 處理SQL,執行SQL */
try {
conn = getConn(); // 得到資料庫連接
pstmt = conn.prepareStatement(preparedSql); // 得到PreparedStatement對象
if( param != null ) {
for( int i = 0; i < param.length; i++ ) {
pstmt.setString(i+1, param[i]); // 為預編譯sql設置參數
}
}
num = pstmt.executeUpdate(); // 執行SQL語句
} catch (ClassNotFoundException e) {
e.printStackTrace(); // 處理ClassNotFoundException異常
} catch (SQLException e) {
e.printStackTrace(); // 處理SQLException異常
} finally {
closeAll(conn,pstmt,null); // 釋放資源
}
return num;
}
}
❹ Apache Commons DbUtils 怎麼實現 創建表的操作
關於Apache的DbUtils中間件或許了解的人並不多,大部分開發人員在生成環境中更多的是依靠Hibernate、Ibatis、Spring JDBC、JPA等大廠提供的持久層技術解決方案,或者是企業內部自己研發的持久層技術。但無論如何,使用這些技術的初衷和本質都是為了能夠減少企業開發成本,提高生產效率,降低耦合。
放眼企業級項目,Hibernate等ORM產品是首選,而互聯網領域,大部分開發人員往往並不會在生產環境中上這些ORM技術,原因很簡單,要的就是效率,其次都不重要。對於剛接觸SQL和JDBC的開發人員,最引以為傲的就是希望能夠在日後編寫復雜的SQL語句,以及會使用諸如Hibernate、Ibatis等第三方持久層技術,並且極力的撇清與傳統JDBC技術的關系,但筆者不得不認為,這是一種普遍業界存在的「病態」!
如果是企業級的項目,尤其是跟金融相關的業務,SQL語句或許會非常復雜,並且關聯著事物。但互聯網項目卻並非如此,在互聯網項目中,看你牛不牛逼並不是取決於你能否寫出一條復雜的SQL語句,而是看你能否將原本一條復雜的SQL語句拆散成單條SQL,一句一句的執行;並且脫離Hibernate等ORM產品後,能否使用傳統的JDBC技術完成一條簡單的CRUD操作,這才是牛逼!是的,你沒有聽錯,互聯網確確實實就是這么玩,還原最本質的東西,才是追求性能的不二選擇。
筆者本章不會提及垂直分庫、水平分區等資料庫概念,以及數據路由中間件等技術(請閱讀筆者博文《剖析淘寶TDDL—Matrix層分庫分表實現》),因為這些內容與本章內容無關,但間接來看,筆者之前提及的單條SQL、使用JDBC完成基本的CRUD操作就可以在最大程度上滿足一個互聯網場景的持久層操作。以Hibernate為例,簡單來說需要經歷HQL->SQL->DBMS等編譯過程,中間還冗餘著緩存、對象等開銷,希望大家記住,封裝層次越高,性能越低!這個是無可爭議的事實。筆者希望大家接下來,暫時「忘記」掉你所會的持久層技術,耐心的聽筆者為你介紹Apache的DbUtils技術,或許你會有意想不到的收獲。
❺ java如何關閉資料庫連接
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
//一個資料庫通用的幫助類,用於連接資料庫與關閉資料庫
public class DBUtil {
//第一步:聲明你所需要的一些全局變數
private final static String DRIVER_CLASS="com.microsoft.sqlserver.jdbc.SQLServerDriver";//載入驅動的字元串
private final static String CONN_STR="jdbc:sqlserver://localhost:1433;databaseName=testDB";//資料庫連接字元串
private final static String DB_USER="sa";//數據用戶
private final static String DB_PWD="123456";//資料庫登錄密碼
//第二步:載入資料庫驅動(這里是sqlserver)
static{
try{
Class.forName(DRIVER_CLASS);
}catch(ClassNotFoundException e){
e.printStackTrace();//拋出異常
}
}
//第三步:獲取資料庫連接
public static Connection getConn(){
try {
return DriverManager.getConnection(CONN_STR,DB_USER,DB_PWD);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
//最後關閉資料庫連接
public static void closeConn(ResultSet rs,PreparedStatement pstmt,Connection conn){
try {
if (rs!=null) {//如果返回的結果集對象不能為空,就關閉連接
rs.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (pstmt!=null) {
pstmt.close();//關閉預編譯對象
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (conn!=null) {
conn.close();//關閉結果集對象
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
❻ java怎樣將資料庫連接放回連接池中
1
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
//一個資料庫通用的幫助類,用於連接資料庫與關閉資料庫
public class DBUtil {
//第一步:聲明你所需要的一些全局變數
private final static String DRIVER_CLASS="com.microsoft.sqlserver.jdbc.SQLServerDriver";//載入驅動的字元串
private final static String CONN_STR="jdbc:sqlserver://localhost:1433;databaseName=testDB";//資料庫連接字元串
private final static String DB_USER="sa";//數據用戶
private final static String DB_PWD="123456";//資料庫登錄密碼
//第二步:載入資料庫驅動(這里是sqlserver)
static{
try{
Class.forName(DRIVER_CLASS);
}catch(ClassNotFoundException e){
e.printStackTrace();//拋出異常
}
}
//第三步:獲取資料庫連接
public static Connection getConn(){
try {
return DriverManager.getConnection(CONN_STR,DB_USER,DB_PWD);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
//最後關閉資料庫連接
public static void closeConn(ResultSet rs,PreparedStatement pstmt,Connection conn){
try {
if (rs!=null) {//如果返回的結果集對象不能為空,就關閉連接
rs.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (pstmt!=null) {
pstmt.close();//關閉預編譯對象
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (conn!=null) {
conn.close();//關閉結果集對象
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
❼ myeclipse鏈接sql資料庫的類的代碼怎麼寫
前期准備工作,安好JDK,MyEclipse。
下載JDBC驅動mysql-connector-java-5.0.5-bin.jar導入到工程中去
1、工程(右鍵)--buildpath--configurebuildpath--addexternaljars。
2、也可以加到classpath中去,具體如下:「我的電腦」->「屬性」->「高級」->「環境變數」,在系統變數那裡編輯classpath,將D:mysql-connector-java-5.0.5mysql-connector-java-5.0.5-bin.jar加到最後,在加這個字元串前要加「;」,以與前一個classpath區分開,然後確定。
測試代碼:所用驅動mysql-connector-java-5.0-nightly-20071116-bin.jar
程序中引用必要的包:importjava.sql.*;//它包含有操作資料庫的各個類與介面
1、載入合適的JDBC驅動程序
Class.forName(Driver);
MySQL驅動程序:com.mysql.jdbc.Driver
Oracle驅動程序:oracle.jdbc.driver.OracleDriver
SQLServer驅動程序:
com.Microsoft.jdbc.sqlserver.SQLServerDriver
2、建立資料庫連接
與MySQL資料庫連接的方法:
Connectioncon=DriverManager.getConnection(「jdbc:mysql://主機IP或主機名:3306/資料庫名」,用戶名,密碼);
java.sql.DriveManager用來處理裝載驅動程序並且為創建新的資料庫連接提供支持;
–java.sql.Connection用於完成對特定定資料庫的連接;
–java.sql.Statement用於對特定的資料庫執行SQL語句;java.sql.Statement又包含了以下兩個重要的子類型:
java.sql.PreparedStatement用於執行預編譯的SQL語句;
java.sql.CallableStatement用於執行資料庫中存儲的過程的調用;
--java.sql.ResultSet用於保存查詢所得的結果集
3、創建Statement對象
Statementst=con.createStatement();//最後可以不關閉,但推薦關閉
利用Statement對象可以執行靜態SQL語句,靜態SQL語句可以是Select語句、Delete語句、Update語句和Insert語句。
執行SQL語句
Statement介面提供了三種執行SQL語句的方法:executeQuery()、executeUpdate()和execute()。具體使用哪一個方法由SQL語句本身來決定。
方法executeQuery用於產生單個結果集的語句,例如SELECT語句等。
方法executeUpdate用於執行INSERT、UPDATE或DELETE語句以及SQLDDL(數據定義語言)語句,例如CREATETABLE和DROPTABLE。INSERT、UPDATE或DELETE語句的效果是修改表中零行或多行中的一列或多列。executeUpdate的返回值是一個整數,指示受影響的行數(即更新計數)。對於CREATETABLE或DROPTABLE等不操作行的語句,executeUpdate的返回值總為零。
方法execute用於執行返回多個結果集、多個更新計數或二者組合的語句。一般不會需要該高級功能。
①JDBC在編譯時並不對將要執行的SQL查詢語句作任何檢查,只是將其作為一個String類對象,直到驅動程序執行SQL查詢語句時才知道其是否正確。對於錯誤的SQL查詢語句,在執行時將會產生SQLException。
②一個Statement對象在同一時間只能打開一個結果集,對第二個結果集的打開隱含著對第一個結果集的關閉。
③如果想對多個結果集同時操作,必須創建出多個Statement對象,在每個Statement對象上執行SQL查詢語句以獲得相應的結果集。
④如果不需要同時處理多個結果集,則可以在一個Statement對象上順序執行多個SQL查詢語句,對獲得的結果集進行順序操作。
str="insertintocustomervalues('wangyang',24,'beijing','[email protected]')";
intrecordNumber=st.executeUpdate(str);執行executeUpdate()方法返回該SQL語句涉及的記錄數。
str="select*frommycustomer";//查詢表中記錄
ResultSetrs=st.executeQuery(str);由於SQL語句是select,用executeQuery()方法,返回一個結果集保存在ResultSet對象rs中。
4、分析ResultSet對象
①執行完畢SQL語句後,將返回一個ResultSet類的對象,它包含所有的查詢結果。但對ResultSet類的對象方式依賴於游標(Cursor)的類型,而對每一行中的各個列,可以按任何順序進行處理(當然,如果按從左到右的順序對各列進行處理可以獲得較高的執行效率);
ResultSet類中的Course方式主要有:
ResultSet.TYPE_FORWARD_ONLY(為預設設置):游標只能前進不能後退,也就是只能從第一個一直移動到最後一個。
ResultSet.TYPE_SCROLL_SENSITIVE:允許游標前進或後退並感應到其它ResultSet的游標的移動情形。
ResultSet.TYPE_SCROLL_INSENSITIVE:允許游標前進或後退並不能感應到其它ResultSet的游標的移動情形。
ResultSet類中的數據是否允許修改主要有:
ResultSet.CONCUR_READ_ONLY(為預設設置):表示數據只能只讀,不能更改。
ResultSet.CONCUR_UPDATABLE:表示數據允許被修改。
可以在創建Statement或PreparedStatement對象時指定ResultSet的這兩個特性。
Statementstmt=con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
或
PreparedStatementpstmt=con.PrepareStatement("insertintobookTablevalues(?,?,?)",ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
②ResultSet類的對象維持一個指向當前行的指針,利用ResultSet類的next()方法可以移動到下一行(在JDBC中,Java程序一次只能看到一行數據),如果next()的返回值為false,則說明已到記錄集的尾部。另外JDBC也沒有類似ODBC的書簽功能的方法。
③利用ResultSet類的getXXX()方法可以獲得某一列的結果,其中XXX代表JDBC中的Java數據類型,如getInt()、getString()、getDate()等。訪問時需要指定要檢索的列(可以採用int值作為列號(從1開始計數)或指定列(欄位)名方式,但欄位名不區別字母的大小寫)。
示例:
while(rs.next()){
intid=rs.getInt("id");
Stringname=rs.getString("cName");
intage=rs.getInt("cAge");
Stringaddress=rs.getString("cAddress");
Stringemail=rs.getString("cEmail");
System.out.println(id+""+name+""+age+""+address+""+email);
}
獲得結果集中的結構信息:利用ResultSet類的getMetaData()方法來獲得結果集中的一些結構信息(主要提供用來描述列的數量、列的名稱、列的數據類型。利用ResulSetMetaData類中的方法)。
ResultsetMetaDatarsmd=rs.getMetaData();
rsmd.getColumnCount();//返回結果集中的列數
rsmd.getColumnLabel(1);//返回第一列的列名(欄位名)
例如:
Statementstmt=con.createStatement();
ResultSetrs=stmt.executeQuery("select*fromTableName");
for(inti=1;i<=rs.getMetaData().getColumnCount();i++)//跟蹤顯示各個列的名稱
{System.out.print(rs.getColumnName(i)+" ");
}
while(rs.next())
{//跟蹤顯示各個列的值
for(intj=1;j<=rs.getMetaData().getColumnCount();j++)
{System.out.print(rs.getObject(j)+" ");
}
}
5、關閉連接
(注意關閉的順序)例:
rs.close();
st.close();
con.close()
6、JDBC的常用API
一、Connection介面:
1.createStatement():創建資料庫連接
2.prepareStatement(Stringsql):創建預處理語句
3.prepareCall(Stringsql):創建可調用語句
4.getAutoCommit():獲取自動提交的模式
5.setAutoCommit():設置自動提交的模式
6.commit():提交所執行的SQL語句
7.rollback():回滾所執行的SQL語句
8.getMetaData():獲取一個DatabaseMetaData對象,該對象包含了有關資料庫的基本信息
9.close():關閉資料庫連接
10.isClose():判斷資料庫連接是否超時或被顯示關閉
二、Statement介面:
1.execute(Stringsql):執行SQL語句,如果返回值是結果集則為true,否則為false
2.executeQuery(Stringsql):執行SQL語句,返回值為ResultSet
3.executeUpdate(Stringsql):執行SQL語句,返回值為所影響的行數
4.addBatch(Stringsql):向當前Statement對象的命令列表中添加新的批處理SQL語句
5.clearBatch():清空當前Statement對象的命令列表
6.executeBatch():執行當前Statement對象的批處理語句,返回值為每個語句所影響的函數數組
7.getConnection():返回創建了該Statement對象的Connection對象
8.getQueryTimeout():獲取等待處理結果的時間
9.setQueryTimeout():設置等待處理結果的時間
三、ResultSet介面:
1.first()/beforeFirst():將游標移動到ResultSet中第一條記錄(的前面)
2.last()/afterLast():將游標移動到ResultSet中最後一條記錄(的後面)
3.absolute(intcolumn):將游標移動到相對於第一行的指定行,負數則為相對於最後一條記錄
4.relative(introws):將游標移動到相對於當前行的第幾行,正為向下,負為向上
5.next():將游標下移一行
6.previous():將游標上移一行
7.insertRow():向當前ResultSet和資料庫中被插入行處插入一條記錄
8.deleteRow():將當前ResultSet中的當前行和資料庫中對應的記錄刪除
9.updateRow():用當前ResultSet中已更新的記錄更新資料庫中對應的記錄
10.cancelUpdate():取消當前對ResultSet和資料庫中所做的操作
11.findColumn(StringcolumnName):返回當前ResultSet中與指定列名對應的索引
12.getRow():返回ResultSet中的當前行號
13.refreshRow():更新當前ResultSet中的所有記錄
14.getMetaData():返回描述ResultSet的ResultSetMetaData對象
15.isAfterLast():是否到了結尾
16.isBeforeFirst():是否到了開頭
17.isFirst():是否第一條記錄
18.isLast():是否最後一條記錄
19.wasNull():檢查列值是否為NULL值,如果列的類型為基本類型,且資料庫中的值為0,那麼
這項檢查就很重要。由於資料庫NULL也返回0,所以0值和資料庫的NULL不能區分。如果列的類型為對象,可以簡單地將返回值與null比較
20.close():關閉當前ResultSet
四、ResultSetMetaData介面:
1.getColumnCount():返回ResultSet中列的數目
2.getColumnName():返回列在資料庫中的名稱
3.getColumnType():返回列的SQL類型
4.isReadOnly():表示該數據項是否為只讀值
5.isNullable():表示該列是否可以存儲NULL
示例:
importjava.sql.*;
publicclassJDBCTest{
publicstaticvoidmain(String[]args){
//驅動程序名
Stringdriver="com.mysql.jdbc.Driver";
//URL指向要訪問的資料庫名scutcs
Stringurl="jdbc:mysql://127.0.0.1:3306/test";
//MySQL配置時的用戶名
Stringuser="root";
//MySQL配置時的密碼
Stringpassword="123456";
try{
//載入驅動程序
Class.forName(driver);
//連續資料庫
Connectionconn=DriverManager.getConnection(url,user,password);
if(!conn.isClosed())
System.out.println("!");
//statement用來執行SQL語句
Statementstatement=conn.createStatement();
//要執行的SQL語句
Stringsql="select*frompet";
//結果集
ResultSetrs=statement.executeQuery(sql);
System.out.println("-----------------");
Stringname=null;
while(rs.next()){
//選擇sname這列數據
name=rs.getString("name");
//首先使用ISO-8859-1字元集將name解碼為位元組序列並將結果存儲新的位元組數組中。
//然後使用GB2312字元集解碼指定的位元組數組
name=newString(name.getBytes("ISO-8859-1"),"GB2312");
//輸出結果
System.out.println(rs.getString("ID")+" "+name);
}
rs.close();
conn.close();
}catch(ClassNotFoundExceptione){
System.out.println("Sorry,can`tfindtheDriver!");
e.printStackTrace();
}catch(SQLExceptione){
e.printStackTrace();
}catch(Exceptione){
e.printStackTrace();
}
}
}
❽ 在java中如何實現預編譯
/*
* ProCompile.java *預處理要編譯的文件,刪除多餘的空白,注釋,換行,回車等
* Created on 2007年9月18日, 下午8:58 */ package javacompile; import java.io.*;
import java.util.regex.*;
import javax.swing.JOptionPane; /** * @com.junjian.sun public class PerCompile { File f = null;
String fileString = null;
Pattern p = null;
Matcher m = null;
String regex; //正則表達式 //初始化p
public PerCompile() {
regex ="(//.+)" + //(//.+) 對應單行注釋
//"|(/\\*(.+\\n)+\\*/)"+ // 想對應多行注釋... "|(\\r\\n)" + "|(\\n)"+//(\\r\\n)|(\\n)對應換行
"|(\\B\\s+)" ; // 空白符
String ss;
f = new File(new JOptionPane()
.showInputDialog("請輸入文件所在路徑~"));
try {
BufferedReader bf = new BufferedReader(new FileReader(f));
ss = bf.readLine()+"\n";
fileString = ss; //如果沒有這兩句,ss的開頭會有「null」
while((ss = bf.readLine())!= null){
fileString += ss+"\n"; bf.close();
} catch (IOException ex) {
ex.printStackTrace(); p = Pattern.compile(regex);
m = p.matcher(fileString); //執行替換所有多餘空行,空白符,注釋
void Dels(){
System.out.println("before: "+fileString);
if(m.find()) System.out.println("find!!");
System.out.println(m.replaceAll("")); } }
-
❾ 用DButil怎麼執行批處理
剛剛做這個有關的項目 幫你解答下啦
批量執行刪除操作
QueryRunner runQuery = new QueryRunner(dataSource);
runQuery.batch(sql,object); // sql : "DELETE FROM english WHERE id = ? "
// 第二個參數是個 Object 類型的二維參數 第一列是執行的個數
// 第二列是 預編譯 ? 號對應的值 因此預編譯是可有多個 ? 號
含金量主要是那個 二維數組
參考資料:DButil 源碼 及其使用
再不懂的話 問度娘吧
❿ java連接資料庫在什麼位置關閉連接
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
//一個資料庫通用的幫助類,用於連接資料庫與關閉資料庫
public class DBUtil {
//第一步:聲明你所需要的一些全局變數
private final static String DRIVER_CLASS="com.microsoft.sqlserver.jdbc.SQLServerDriver";//載入驅動的字元串
private final static String CONN_STR="jdbc:sqlserver://localhost:1433;databaseName=testDB";//資料庫連接字元串
private final static String DB_USER="sa";//數據用戶
private final static String DB_PWD="123456";//資料庫登錄密碼
//第二步:載入資料庫驅動(這里是sqlserver)
static{
try{
Class.forName(DRIVER_CLASS);
}catch(ClassNotFoundException e){
e.printStackTrace();//拋出異常
}
}
//第三步:獲取資料庫連接
public static Connection getConn(){
try {
return DriverManager.getConnection(CONN_STR,DB_USER,DB_PWD);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
//最後關閉資料庫連接
public static void closeConn(ResultSet rs,PreparedStatement pstmt,Connection conn){
try {
if (rs!=null) {//如果返回的結果集對象不能為空,就關閉連接
rs.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (pstmt!=null) {
pstmt.close();//關閉預編譯對象
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (conn!=null) {
conn.close();//關閉結果集對象
}
} catch (Exception e) {
e.printStackTrace();
}
}
}