|
Posted on 2009-12-28 21:07 啥都寫點 閱讀(267) 評論(0) 編輯 收藏 所屬分類: J2SE
 只有在數據庫服務開啟時,才能連接數據庫。
 需要提供連接數據庫的Java驅動類和數據庫的URL,不同數據庫的URL的格式略有不同,但都符合一個基本的格式,即“協議名+IP地址(域名)+端口+數據庫名”。
 如果數據庫設有密碼,還必須提供連接數據庫的用戶名和密碼。
 首先用Class的forName方法加載數據庫驅動類;然后使用java.sql.DriverManager的getConnection方法連接數據庫,該方法返回一個連接對象。
package book.database;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

 /** *//**
* 連接各類數據庫的方法
*/
 public class DBConnector {
 /** *//**
* 獲得數據庫連接
* @param driverClassName 連接數據庫用到的驅動類的類名
* @param dbURL 數據庫的URL
* @param userName 登陸數據庫的用戶名
* @param password 登陸數據庫的密碼
* @return
* @throws ClassNotFoundException
* @throws SQLException
*/
public static Connection getConnection(String driverClassName,
String dbURL, String userName, String password)
 throws ClassNotFoundException, SQLException {
Connection con = null;

// 加載連接數據庫的驅動類
Class.forName(driverClassName);
// 用用戶名、密碼連接數據庫
con = DriverManager.getConnection(dbURL, userName, password);

return con;
}
 /** *//**
* 獲得Oracle數據庫的連接
* @param dricerClassName 連接數據庫用到的驅動類的類名
* @param serverHost 數據庫所在服務器的IP或域名
* @param serverPort 數據庫所在服務器的端口
* @param dbName 數據庫名
* @param userName 登陸數據庫的用戶名
* @param password 登陸數據庫的密碼
* @return
* @throws ClassNotFoundException 數據庫驅動類無法找到是拋出該異常
* @throws SQLException 創建連接時可能拋出該異常
*/
public static Connection getOracleConnection(String dricerClassName,
String serverHost, String serverPort, String dbName,
String userName, String password) throws ClassNotFoundException,
 SQLException {
// 如果沒有提供這些連接參數,則用默認值
 if (dricerClassName == null) {
dricerClassName = "oracle.jdbc.driver.OracleDriver";
}
 if (serverHost == null) {
serverHost = "127.0.0.1";
}
 if (serverPort == null) {
serverPort = "1521";
}
// 構建訪問Oracle數據庫的URL
String dbURL = "jdbc:oracle:thin:@" + serverHost + ":" + serverPort
+ ":" + dbName;
return getConnection(dricerClassName, dbURL, userName, password);
}
 /** *//**
* 獲得DB2數據庫的連接
*/
public static Connection getDB2Connection(String dricerClassName,
String serverHost, String serverPort, String dbName,
String userName, String password) throws ClassNotFoundException,
 SQLException {
// 如果沒有提供這些連接參數,則用默認值
 if (dricerClassName == null) {
dricerClassName = "com.ibm.db2.jdbc.app.DB2Driver";
}
 if (serverHost == null) {
serverHost = "127.0.0.1";
}
 if (serverPort == null) {
serverPort = "5000";
}
// 構建訪問DB2數據庫的URL
String dbURL = "jdbc:db2://" + serverHost + ":" + serverPort
+ "/" + dbName;
return getConnection(dricerClassName, dbURL, userName, password);
}
 /** *//**
* 獲得SQL Server數據庫的連接
*/
public static Connection getSQLServerConnection(String dricerClassName,
String serverHost, String serverPort, String dbName,
String userName, String password) throws ClassNotFoundException,
 SQLException {
// 如果沒有提供這些連接參數,則用默認值
 if (dricerClassName == null) {
dricerClassName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
}
 if (serverHost == null) {
serverHost = "127.0.0.1";
}
 if (serverPort == null) {
serverPort = "1433";
}
// 構建訪問SQL Server數據庫的URL
String dbURL = "jdbc:microsoft:sqlserver://" + serverHost + ":" + serverPort
+ "; DatabaseName=" + dbName;
return getConnection(dricerClassName, dbURL, userName, password);
}
 /** *//**
* 獲得MySQL數據庫的連接
*/
public static Connection getMySQLConnection(String dricerClassName,
String serverHost, String serverPort, String dbName,
String userName, String password) throws ClassNotFoundException,
 SQLException {
// 如果沒有提供這些連接參數,則用默認值
 if (dricerClassName == null) {
dricerClassName = "com.mysql.jdbc.Driver";
}
 if (serverHost == null) {
serverHost = "127.0.0.1";
}
 if (serverPort == null) {
serverPort = "3306";
}
// 構建訪問SQL Server數據庫的URL
String dbURL = "jdbc:mysql://" + serverHost + ":" + serverPort
+ "/" + dbName;
return getConnection(dricerClassName, dbURL, userName, password);
}
 /** *//**
* 獲得Sybase數據庫的連接
*/
public static Connection getSybaseConnection(String dricerClassName,
String serverHost, String serverPort, String dbName,
String userName, String password) throws ClassNotFoundException,
 SQLException {
// 如果沒有提供這些連接參數,則用默認值
 if (dricerClassName == null) {
dricerClassName = "com.sybase.jdbc3.jdbc.SybDriver";
}
 if (serverHost == null) {
serverHost = "127.0.0.1";
}
 if (serverPort == null) {
serverPort = "5007";
}
// 構建訪問SQL Server數據庫的URL
String dbURL = "jdbc:sybase:Tds:" + serverHost + ":" + serverPort
+ "/" + dbName;
return getConnection(dricerClassName, dbURL, userName, password);
}
 /** *//**
* 獲得PostgreSQL數據庫的連接
*/
public static Connection getPostgreSQLConnection(String dricerClassName,
String serverHost, String serverPort, String dbName,
String userName, String password) throws ClassNotFoundException,
 SQLException {
// 如果沒有提供這些連接參數,則用默認值
 if (dricerClassName == null) {
dricerClassName = "org.postgresql.Driver";
}
 if (serverHost == null) {
serverHost = "127.0.0.1";
}
 if (serverPort == null) {
serverPort = "5432";
}
// 構建訪問SQL Server數據庫的URL
String dbURL = "jdbc:postgresql://" + serverHost + ":" + serverPort
+ "/" + dbName;
return getConnection(dricerClassName, dbURL, userName, password);
}

public static void main(String[] args) throws ClassNotFoundException,
 SQLException {
// 獲得本地MySQL的連接實例,使用MySQL需要去www.mysql.com下載最新的MySQL安裝程序和Java驅動
// MySQL有多個連接MySQL的驅動類,如org.gjt.mm.mysql.Driver。
// 這里使用MySQL官方網站上提供的驅動類
String mySQLDirver = "com.mysql.jdbc.Driver";
String dbName = "studentdb";
String userName = "test";
String password = "test";
Connection con = DBConnector.getMySQLConnection(mySQLDirver,
null, null, dbName, userName, password);
System.out.println("連接MySQL數據庫成功!");
con.close();
System.out.println("成功關閉與MySQL數據庫的連接!");
String url = "jdbc:mysql://127.0.0.1:3306/" + dbName;
con = DBConnector.getConnection(mySQLDirver, url, userName, password);
System.out.println("連接MySQL數據庫成功!");
con.close();
System.out.println("成功關閉與MySQL數據庫的連接!");
}
}
 -- 學海無涯
|