DB驅動程序
常見的驅動程序如下:
- ODBC
ODBC(Open Database Connectivity,開放數據庫互連)是微軟公司開放服務結構(WOSA,Windows Open Services Architecture)中有關數據庫的一個組成部分,它建立了一組規范,並提供了一組對數據庫訪問的標准API(應用程序編程接口)。這些API利用SQL來完成其大部分任務。ODBC本身也提供了對SQL語言的支持,用戶可以直接將SQL語句送給ODBC。
- OLE DB
OLE DB 是 Microsoft 的一個戰略性系統級編程接口,用於管理整個組織內的數據。OLE DB 是建立在 ODBC 功能之上的一個開放規范。ODBC 是為訪問關系型數據庫而專門開發的,OLE DB 則用於訪問關系型和非關系型信息源,例如主機 ISAM/VSAM 和層次數據庫,電子郵件和文件系統存儲,文本、圖形和地理數據以及自定義業務對象。OLE DB 定義了一組 COM 接口,對各種數據庫管理系統服務進行封裝,並允許創建軟件組件,實現這些服務。OLE DB 組件包括數據提供程序(包含和表現數據)、數據使用者(使用數據)和服務組件(處理和傳送數據,例如,查詢處理器和游標引擎)。OLE DB 接口有助於平滑地集成組件,這樣,OLE DB 組件廠商就可以快速地向市場提供高質量 OLE DB 組件。此外,OLE DB 包含了一個連接 ODBC 的“橋梁”,對現用的各種 ODBC 關系型數據庫驅動程序提供一貫的支持。
- JDBC
JDBC(Java Data Base Connectivity,java數據庫連接)是一種用於執行SQL語句的Java API,可以為多種關系數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成。JDBC提供了一種基准,據此可以構建更高級的工具和接口,使數據庫開發人員能夠編寫數據庫應用程序,同時,JDBC也是個商標名。
比較
目前,Microsoft 的 ODBC API 可能是使用最廣的、用於訪問關系數據庫的編程接口。它能在幾乎所有平台上連接幾乎所有的數據庫。為什么 Java 不使用 ODBC?對這個問題的回答是:Java 可以使用 ODBC,但最好是在 JDBC 的幫助下以JDBC-ODBC橋的形式使用,這一點我們稍后再說。現在的問題已變成:”為什么需要 JDBC”?答案是顯然的:ODBC 不適合直接在 Java 中使用,因為它使用 C 語言接口。從Java 調用本地 C代碼在安全性、實現、堅固性和程序的自動移植性方面都有許多缺點。從 ODBC C API 到 Java API 的字面翻譯是不可取的。例如,Java 沒有指針,而 ODBC 卻對指針用得很廣泛(包括很容易出錯的指針”void *”)。您可以將 JDBC 想象成被轉換為面向對象接口的 ODBC,而面向對象的接口對 Java程序員來說較易於接受。
ODBC 很難學。它把簡單和高級功能混在一起,而且即使對於簡單的查詢,其選項也極為復雜。相反,JDBC 盡量保證簡單功能的簡便性,而同時在必要時允許使用高級功能。啟用”純 Java “機制需要象 JDBC 這樣的 Java API。如果使用ODBC,就必須手動地將 ODBC 驅動程序管理器和驅動程序安裝在每台客戶機上。如果完全用 Java 編寫 JDBC 驅動程序則 JDBC代碼在所有 Java 平台上(從網絡計算機到大型機)都可以自 動安裝、移植並保證安全性。
總之,JDBC API 對於基本的 SQL 抽象和概念是一種自然的 Java 接口。它建立在 ODBC 上而不是從零開始。因此,熟悉 ODBC 的程序員將發現 JDBC 很容易使用。JDBC 保留了 ODBC 的基本設計特征;事實上,兩種接口都基於 X/Open SQL CLI(調用級接口)。它們之間最大的區別在於:JDBC 以 Java 風格與優點為基礎並進行優化,因此更加易於使用。
目前,Microsoft 又引進了 ODBC 之外的新 API: RDO、 ADO 和OLE DB。這些設計在許多方面與 JDBC 是相同的,即它們都是面向對象的數據庫接口且基於可在 ODBC 上實現的類。但在這些接口中,我們未看見有特別的功能使我們要轉而選擇它們來替代 ODBC,尤其是在 ODBC 驅動程序已建立起較為完善的市場的情況下。它們最多也就是在 ODBC 上加了一種裝飾而已。
數據庫鏈接字符串大全
SQL Server
- SQL Native Client ODBC Driver
標准安全連接
Driver={SQL Native Client};Server=myServerAddress; Database=myDataBase;Uid=myUsername;Pwd=myPassword;
受信的連接
Driver={SQL Native Client}; Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;
“Integrated Security=SSPI” 與 “Trusted_Connection=yes” 是相同的。
連接到一個SQL Server實例
指定服務器實例的表達式和其他SQL Server的連接字符串相同。
Driver={SQL Native Client};Server=myServerName/theInstanceName;Database=myDataBase; Trusted_Connection=yes;
指定用戶名和密碼
oConn.Properties(“Prompt”) = adPromptAlways Driver={SQL Native Client}; Server=myServerAddress;Database=myDataBase;
使用MARS (multiple active result sets)
Driver={SQL Native Client};Server=myServerAddress;Database=myDataBase; Trusted_Connection=yes;MARS_Connection=yes;
“MultipleActiveResultSets=true”與MARS_Connection=yes”是相同的。
使用ADO.NET 2.0作為MARS的模塊。 MARS不支持ADO.NET 1.0和ADO.NET 1.1。
驗證網絡數據
Driver={SQL Native Client}; Server=myServerAddress;Database=myDataBase; Trusted_Connection=yes;Encrypt=yes;
使用附加本地數據庫文件的方式連接到本地SQL Server Express實例
Driver={SQL Native Client};Server=./SQLExpress; AttachDbFilename=c:/asd/qwe/mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
為何要使用Database參數?如果同名的數據庫已經被附加,那么SQL Server將不會重新附加。
使用附加本地數據文件夾中的數據庫文件的方式連接到本地SQL Server Express實例
Driver={SQL Native Client};Server=./SQLExpress; AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname; Trusted_Connection=Yes;
為何要使用Database參數?如果同名的數據庫已經被附加,那么SQL Server將不會重新附加。
數據庫鏡像
Data Source=myServerAddress; Failover Partner=myMirrorServer;Initial Catalog=myDataBase;Integrated Security=True;
- SQL Native Client OLE DB Provider
標准連接
Provider=SQLNCLI;Server=myServerAddress; Database=myDataBase;Uid=myUsername;Pwd=myPassword;
受信的連接
Provider=SQLNCLI;Server=myServerAddress; Database=myDataBase;Trusted_Connection=yes;
連接到SQL Server實例
指定服務器實例的表達式和其他SQL Server的連接字符串相同。
Provider=SQLNCLI;Server=myServerName/theInstanceName; Database=myDataBase;Trusted_Connection=yes;
使用帳號和密碼
oConn.Properties(“Prompt”) = adPromptAlways oConn.Open “Provider=SQLNCLI;Server=myServerAddress;DataBase=myDataBase;
使用MARS (multiple active result sets)
Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;MarsConn=yes;
“MultipleActiveResultSets=true”和”MARS_Connection=yes”是相同的。
使用ADO.NET 2.0作為MARS的模塊。 MARS不支持ADO.NET 1.0和ADO.NET 1.1。
驗證網絡數據
Provider=SQLNCLI;Server=myServerAddress; Database=myDataBase;Trusted_Connection=yes;Encrypt=yes;
使用附加本地數據庫文件的方式連接到本地SQL Server Express實例
Provider=SQLNCLI;Server=./SQLExpress;AttachDbFilename=c:/asd/qwe/mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
使用附加本地數據文件夾中的數據庫文件的方式連接到本地SQL Server Express實例
Provider=SQLNCLI;Server=./SQLExpress; AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
數據庫鏡像
Data Source=myServerAddress;Failover Partner=myMirrorServer; Initial Catalog=myDataBase;Integrated Security=True;
- SqlConnection (.NET)
標准連接
Data Source=myServerAddress; Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;
Standard Security alternative syntax
Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;
受信任的連接
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;
Trusted Connection alternative syntax
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
連接到一個SQL Server的實例
指定服務器實例的表達式和其他SQL Server的連接字符串相同。
Server=myServerName/theInstanceName;Database=myDataBase;Trusted_Connection=True;
來自WinCE設備的安全連接
Data Source=myServerAddress; Initial Catalog=myDataBase; Integrated Security=SSPI;User ID=myDomain/myUsername;Password=myPassword;
僅能用於CE設備。
帶有IP地址的連接
Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;
使用MARS (multiple active result sets)
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True; MultipleActiveResultSets=true;
使用ADO.NET 2.0作為MARS的模塊。 MARS不支持ADO.NET 1.0和ADO.NET 1.1。
使用附加本地數據庫文件的方式連接到本地SQL Server Express實例
Server=./SQLExpress;AttachDbFilename=c:/asd/qwe/mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
使用附加本地數據文件夾中的數據庫文件的方式連接到本地SQL Server Express實例
Server=./SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
使用在SQL Server Express實例上的用戶實例
Data Source=./SQLExpress;Integrated Security=true;AttachDbFilename=|DataDirectory|/mydb.mdf;User Instance=true;
數據庫鏡像
Data Source=myServerAddress;Failover Partner=myMirrorServer;Initial Catalog=myDataBase;Integrated Security=True;
Asynchronous processing
Server=myServerAddress; Database=myDataBase; Integrated Security=True; Asynchronous Processing=True;
