使用 JDBC 連接資料庫相當簡單,首先根據自己的需要下載對應的 jar 檔,以 SQL Server 2000 為例,需要下載 sqljdbc4.jar ,下載之後 add 到專案中, 接著在程式碼中連接資料庫,一個簡單的範例如下
F_ConnToSQLServer.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import fsql.F_ConnUtil;
public class F_ConnToSQLServer{
public static String COMM_SHOW_ALLTABLES = "select * from sysobjects where xtype = 'U';";//顯示資料庫中所有資料表與細節
public static String COMM_SHOW_VERSION = "SELECT @@VERSION AS 'SQL Server Version'";//版本
public static String COMM_SHOW_ALLDATABASER = "SELECT * FROM master.dbo.sysdatabases";//顯示所有資料庫
public static String COMM_SHOW_CONFIGURES = "SELECT * FROM master.dbo.sysconfigures";//列出SQL Server Instance設定
Connection conn;
//com.microsoft.jdbc.sqlserver.SQLServerDriver (SQL Server 2000 Driver的寫法 )
//com.microsoft.sqlserver.jdbc.SQLServerDriver (現在最新Driver 3.0的寫法)
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url;
String ipNum;
String portNum;
String dbName;
String userName;
String passWord;
/**
*
* @param ipnum : ip
* @param portnum : port
* @param dbname : dbname
* @param username
* @param password
*/
public F_ConnToSQLServer(String ipnum,String portnum,
String dbname,String username,String password){
ipNum = ipnum;
portNum = portnum;
dbName = dbname;
userName = username;
passWord = password;
try {
Class.forName(driver);
url= "jdbc:sqlserver://"+ipNum+";databaseName="+dbName+";integratedSecurity=false";
try {
if (userName == null && passWord == null) {
conn = DriverManager.getConnection(url);
} else {
// url , 使用者 , 密碼
conn = DriverManager.getConnection(url, userName, passWord);
}
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public Connection getConn(){
return conn;
}
}
只要建立 F_ConnToSQLServer 物件,在建構子中傳入帳號和密碼(不需要就傳 null),就能建立和資料庫連線
使用範例
JdbcExam.java
package testdrivers;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import fsql3.F_ConnToSQLServer;
public class Jdbc_Exam {
public static void main(String[] args) {
F_ConnToSQLServer connpgsql = new F_ConnToSQLServer("192.168.17.128",
"5432", "dbname", "user", "password");
Connection conn = connpgsql.getConn();
String comm = "select * from tablename";
execComm(conn, comm);
}
public static void execComm(Connection conn, String comm) {
// 執行指令
Statement stmt;
ResultSet rs;
// 取得回傳結果的資料欄位總數
ResultSetMetaData rsmd = null;
try {
stmt = conn.createStatement();
if (stmt.execute(comm)) {
System.out.println("" + comm);
// true resultset
rs = stmt.getResultSet();
rsmd = rs.getMetaData();
// rs.next是取得每一列
while (rs.next()) {
// 取得每列中的每個欄位資料(rsmd.getColumnCount為每列的長度,也是欄位資料的總數)
for (int i = 1; i < rsmd.getColumnCount() + 1; i++) {
if (i != rsmd.getColumnCount()) {
System.out.print(rs.getString(i) + " ");
} else {
System.out.print(rs.getString(i));
}
}
System.out.println();
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
最後就能在主控台看到結果了