JAVA與資料庫連接方法(一)
最後更新:2017-02-28
來源:互聯網
上載者:User
資料|資料庫|資料庫連接 啟用BLOG之後由於最近比較也沒寫什麼原創文章,現在趁閑的時候寫幾篇發上去。前段時間在研究JAVA與資料庫的串連,發一點經驗上去。
用JAVA串連資料庫主要有兩種方式,一是用JDBC-ODBC橋來串連,二是用相關廠商提供的相應驅動程式來串連,首先談談第一種串連。
JDBC-ODBC橋接器是用JdbcOdbc.Class和一個用於訪問ODBC驅動程式的本地庫實現的。對於WINDOWS平台,該本地庫是一個動態串連庫DLL(JDBCODBC.DLL)。
由於JDBC在設計上與ODBC很接近。在內部,這個驅動程式把JDBC的方法映射到ODBC調用上,這樣,JDBC就可以和任何可用的ODBC驅動程式進行互動了。這種橋接器的優點是,它使JDBC目前有能力訪問幾乎所有的資料庫。通行方式如圖所示:
應用程式---JDBC API---JDBC-ODBC---ODBC API---ODBC層---資料來源
具體操作方法為:
首先開啟控制台的管理工具,開啟資料來源(ODBC),在使用者DSN裡面添加資料來源(即你要串連的資料庫的名字),在這裡假定串連SQL SERVER 2000的GoodsSupply資料庫。名稱填寫你要串連的資料庫的名稱(GoodsSupply),然後逐步設定,如果選用了使用SQL-SERVER密碼認證的話,就要輸入相應的使用者名稱及密碼串連到資料庫。一路下一步設定完成。
在JAVA裡面編寫程式進行測試,在這裡我的程式是讓使用者輸入任意的表名與與列名,把該列的所有資料輸出。原始碼如下:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.sql.*;
public class ODBCBridge {
public static void main(String[] args) {
String url="jdbc:odbc:GoodsSupply";
Statement sm=null;
String command=null;
ResultSet rs=null;
String tableName=null;
String cName=null;
String result=null;
BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
try {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //載入驅動
}catch(ClassNotFoundException e){
System.out.println("Can not load Jdbc-Odbc Bridge Driver");
System.err.print("ClassNotFoundException:");
System.err.println(e.getMessage());
}
Connection con=DriverManager.getConnection(url,"USER","PASSWORD"); //使用SQL-SERVER2000認證
DatabaseMetaData dmd=con.getMetaData(); //DMD為串連的相應情況
System.out.println("串連的資料庫:"+dmd.getURL());
System.out.println("驅動程式:"+dmd.getDriverName());
sm=con.createStatement();
System.out.println("輸入表名");
tableName=input.readLine();
while(true) {
System.out.println("輸入列名(為空白時程式結束):");
cName=input.readLine();
if(cName.equalsIgnoreCase(""))
break;
command="select "+cName+" from "+tableName;
rs=sm.executeQuery(command); //執行查詢
if(!rs.next())
System.out.println("表名或列名輸入有誤");
else {
System.out.println("查詢結果為:");
do
{
result=rs.getString(cName);
//資料庫語言設定為中文,不用轉換編碼
//result=new String(result.getBytes("ISO-8859-1"),"GB2312");
System.out.println(result);
}while(rs.next());
}
}
}catch(SQLException ex) {
System.out.println("SQLException:");
while(ex!=null) {
System.out.println("Message:"+ex.getMessage());
ex=ex.getNextException();
}
}catch(Exception e) {
System.out.println("IOException");
}
}
}