IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類(lèi)|軟件專(zhuān)題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁(yè)數(shù)據(jù)庫(kù)MSSQL → VB應(yīng)用程序訪問(wèn)SQL Server的常用方法

VB應(yīng)用程序訪問(wèn)SQL Server的常用方法

時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)

摘 要:

本文討論了Visual Basic應(yīng)用程序訪問(wèn)SQL Server數(shù)據(jù)庫(kù)的幾種常用的方法,分別說(shuō)明了每種方法的內(nèi)部機(jī)理并給出了每種方法的一個(gè)簡(jiǎn)單的實(shí)例,最后比較了每種方法性能和優(yōu)缺點(diǎn)。

一、引言

SQL Server是微軟推出的中小型網(wǎng)絡(luò)數(shù)據(jù)庫(kù)系統(tǒng),是目前最常用的數(shù)據(jù)庫(kù)系統(tǒng)之一。隨著SQL Server網(wǎng)絡(luò)數(shù)據(jù)庫(kù)應(yīng)用程序日益增多,這種Web數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的正常運(yùn)行一般依賴(lài)于已存在的用戶(hù)數(shù)據(jù)庫(kù)。創(chuàng)建維護(hù)數(shù)據(jù)庫(kù)的工作可用SQL Server提供的SQL Enterprise Manager工具來(lái)進(jìn)行,如能提供一種定制的數(shù)據(jù)庫(kù)管理工具,通過(guò)管理應(yīng)用程序來(lái)管理數(shù)據(jù)庫(kù)及其設(shè)備,對(duì)用戶(hù)來(lái)說(shuō)無(wú)疑是最理想的。

Visual Basic作為一種面向?qū)ο蟮目梢暬幊坦ぞ?,具有?jiǎn)單易學(xué),靈活方便和易于擴(kuò)充的特點(diǎn)。而且Microsoft為其提供了與SQL Server通信的API函數(shù)集及工具集,因此它越來(lái)越多地用作大型公司數(shù)據(jù)和客戶(hù)機(jī)—服務(wù)器應(yīng)用程序的前端,與后端的Microsoft SQL Server相結(jié)合,VB能夠提供一個(gè)高性能的客戶(hù)機(jī)—服務(wù)器方案。

二、VB訪問(wèn)SQL Server數(shù)據(jù)的常用方法

使用Visual Basic作為前端開(kāi)發(fā)語(yǔ)言,與SQL Server接口有幾種常用的方法,即:

①數(shù)據(jù)訪問(wèn)對(duì)象/Jet

②為ODBC API編程

③使用SQL Server的Visual Basic庫(kù)(VBSQL)為DB庫(kù)的API編程

④RDO 遠(yuǎn)程數(shù)據(jù)對(duì)象(RemoteData Objects)

⑤ADO 數(shù)據(jù)對(duì)象(Active Data Objects)

1、數(shù)據(jù)訪問(wèn)對(duì)象/Jet

VB支持Data Access Objects(DAOs)的子集。DAO的方法雖然不是性能最好的管理客戶(hù)機(jī)—服務(wù)器之間的對(duì)話方式,但它的確有許多優(yōu)點(diǎn)。DAO/Jet是為了實(shí)現(xiàn)從VB訪問(wèn)Access數(shù)據(jù)庫(kù)而開(kāi)發(fā)的程序接口對(duì)象。使用DAOs訪問(wèn)SQL Server的過(guò)程如下:應(yīng)用程序準(zhǔn)備好語(yǔ)句并送至Jet,Jet引擎(MASJT200.DLL)優(yōu)化查詢(xún),載入驅(qū)動(dòng)程序管理器并與之通訊,驅(qū)動(dòng)程序管理器(ODBC.DLL)通過(guò)調(diào)用驅(qū)動(dòng)器(SQLSRVR.DLL)的函數(shù),實(shí)現(xiàn)連接到數(shù)據(jù)源,翻譯并向SQL Server提交SQL語(yǔ)句且返回結(jié)果。下面是一個(gè)用DAOs訪問(wèn)SQL Server的VB實(shí)例。

注釋?zhuān)?/p>

以下為引用的內(nèi)容:

Form Declarations?
Dim mydb As Database?
Dim mydynaset As Dynaset オ?
Private Sub Form_Load()?
Set mydb = OpenDatabase("", False, False,
"ODBC; DSN=Myserver; WSID=LCL; DATABASE = sales")?
Set mydynaset = mydb CreateDynaset("Select*from Customers")??
End Sub ァ


上述例子是以非獨(dú)占、非只讀方式打開(kāi)sales數(shù)據(jù)庫(kù),并檢索Customers表中的所有字段。OpenDatabase函數(shù)的最后一個(gè)參數(shù)是ODBC連接字符串參數(shù),它指明了Microsoft Access連接到SQL Server所需要知道的一些內(nèi)容。其中"DSN"為數(shù)據(jù)源名,"WSID"為工作站名,"DATABASE"為所要訪問(wèn)的數(shù)據(jù)庫(kù)名。

2、利用ODBC API編程

ODBC(Open Database Connectivity)的思想是訪問(wèn)異種數(shù)據(jù)庫(kù)的一種可移植的方式。與數(shù)據(jù)資源對(duì)話的公用函數(shù)組裝在一個(gè)稱(chēng)為驅(qū)動(dòng)程序管理器(ODBC.DLL)的動(dòng)態(tài)連接中。應(yīng)用程序調(diào)用驅(qū)動(dòng)程序管理器中的函數(shù),而驅(qū)動(dòng)程序管理器反過(guò)來(lái)通過(guò)驅(qū)動(dòng)器(SQLSRVR.DLL)把它們送到服務(wù)器中。

下面的代碼使用上面一些函數(shù)先登錄到一個(gè)服務(wù)器數(shù)據(jù)庫(kù),并為隨后的工作設(shè)置了語(yǔ)句句柄。

以下為引用的內(nèi)容:

Global giHEnv As Long?
Global giHDB As Long?
Global giHStmt As Long?
Dim myResult As integer?
Dim myConnection As Srting?
Dim myBuff As String*256?
Dim myBufflen As Integer?
If SQLAllocEnv(giHEnv)<>SQL_SUCCESS Then
MsgBox"Allocation couldn
注釋?zhuān)?br>t happen!"?
End If?
If SQLAllocConnect(giHEnv,giHDB)<>SQL_SUCCESS Then?
MsgBox "SQL Server couldn注釋?zhuān)簍 connect!"?
End If?
myConnection="DSN=myServer;UID=LCL;PWD=;APP=ODBCTest;WSID=LCL;DATABASE=sales"
?
2 VB與SQL

myResult=SQLDriverConnect(giHDB,Test,form1.hWnd,myConnection.len
(myConnection),myBuff,256,myBufflen,SQL_DRIVER_COMPLETE_REQU IE D)?
myResult=SQLAllocStmt(giHDS,giHStmt)?
myResult=SQLFreeStmt(giHStmt,SQL_COLSE)?
rsSQL="Select * from Customers Where City = "Hunan""?
myResult = SQLExecDirect(giHStmt,rsSQL,Len(rsSQL))

?
3、使用VBSQL對(duì)DB庫(kù)API編程

DB庫(kù)是SQL Server的本地API,SQL Server的Visual Basic庫(kù)(VBSQL)為Visual Basic程序員提供API。從一定意義上說(shuō),VBSQL是連接Visual Basic程序到SQL Server的性能最好最直接的方式。VBSQL包含以下三個(gè)文件:

VBSQL.VBX: 包含庫(kù)函數(shù),具有訪問(wèn)重要的消息和處理錯(cuò)誤的能力

VBSQL.BI:包括所有的常量和變量說(shuō)明

VBSQL.HLP:Windows幫助文件,使用VBSQL的指南

使用VBSQL時(shí),必須將VBSQL.BI加入到Visual Basic工程文件中,并確保VB程序運(yùn)行時(shí)有VBSQL.VBX文件。

一般的DB庫(kù)API編程的過(guò)程是這樣的:先通過(guò)調(diào)用SqlInit對(duì)DB庫(kù)進(jìn)行初始化,再調(diào)用SqlConnection打開(kāi)一個(gè)連接,然后就可做一些工作。下面的代碼是一個(gè)初始化DB庫(kù)并登錄到服務(wù)器的通用例程。

以下為引用的內(nèi)容:

Private Sub InitializeApplication()?
DBLIB_VERSION=SqlInit()?
If DBLIB_VERSION=""Then?
MsgBox"Could not initialize DBLIB!Exit application.", MB_ICONEXCLAMATION?
End If?
End Sub?
Private Function LoginToServer() As integer?
loginToServer=SUCCEED?
Status%=SqlSetloginTime%(loginTimeOut)?
If giSqlConn<>0 Then
SqlClose(giSqlConn)
注釋?zhuān)宏P(guān)閉已打開(kāi)的連接?
giSqlConn=SqlOpenConnection
(gsServerName, gsLoginID, gsPassword, ProgramName, ProgramName)?
If giSqlConn<>0 Then?
liresuit=SqlUse(giSqlConn,"Sales")
Else?
LogintoServer=FAIL?
End If?
End Function

4、RDO 遠(yuǎn)程數(shù)據(jù)對(duì)象(RemoteData Objects)

要討論RDO,就必然要談到DAO。RDO是從DAO派生出來(lái)的,但兩者很大的不同在于其數(shù)據(jù)庫(kù)模式。DAO是針對(duì)[記錄(Records)]和[字段( Fields)],而RDO是作為[行(Rows)]和[列(Columns)]來(lái)處理。也就是說(shuō)DAO 是ISAM模式,RDO是關(guān)系模式。此外DAO是訪問(wèn)Access的Jet引擎(Jet是ISAM)的接口,而RDO則是訪問(wèn)ODBC的接口。

可見(jiàn),RDO是綜合了DAO/Jet、VBSQL/DBLib以及ODBC的優(yōu)點(diǎn)的對(duì)象(Object)。需要強(qiáng)調(diào)的是,RDO是包裹著ODBC API的一層薄薄的外殼, 被設(shè)計(jì)成在后臺(tái)(服務(wù)器端)有數(shù)據(jù)庫(kù)存在的前提下運(yùn)行,同時(shí)也是針對(duì)SQL Server和Oracle而特別設(shè)計(jì)的。

RDO的優(yōu)勢(shì)在于它完全被集成在VB之中。此外,直接訪問(wèn)SQL Server存儲(chǔ)過(guò)程、完全支持T-SQL、T-SQL調(diào)試集成在開(kāi)發(fā)環(huán)境中、Visual Database Tools的集成化等,也是RDO的長(zhǎng)處。

在RDO的對(duì)象和集合中,有很多對(duì)數(shù)據(jù)庫(kù)的狀態(tài)和設(shè)定進(jìn)行操作的屬性(Property),以及對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作的方法(Method)。利用這些,從RDO2.0起就可以開(kāi)發(fā)事件驅(qū)動(dòng)的數(shù)據(jù)庫(kù)應(yīng)用程序。

RDO對(duì)象與VB中其他對(duì)象的概念相同。與VB用的ActiveX控件(以往稱(chēng)為Custom Control或OCX、VBX)相似的是,RDO也帶有屬性和方法;但同Spread、InputMan等普遍應(yīng)用的ActiveX控件不同的是,RDO沒(méi)有自己的用戶(hù)界面,因而可以和VB標(biāo)準(zhǔn)的Timer控件歸為同一類(lèi)。當(dāng)然也可以將RDO看作調(diào)用ODBC

關(guān)鍵詞標(biāo)簽:VB應(yīng)用程序,SQL Serve

相關(guān)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門(mén)文章 淺談JSP JDBC來(lái)連接SQL Server 2005的方法 淺談JSP JDBC來(lái)連接SQL Server 2005的方法 SqlServer2005對(duì)現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟 SqlServer2005對(duì)現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟 sql server系統(tǒng)表?yè)p壞的解決方法 sql server系統(tǒng)表?yè)p壞的解決方法 MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫(kù)用戶(hù)、角色、架構(gòu)的關(guān)系 MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫(kù)用戶(hù)、角色、架構(gòu)的關(guān)系

相關(guān)下載

    人氣排行 配置和注冊(cè)O(shè)DBC數(shù)據(jù)源-odbc數(shù)據(jù)源配置教程 如何遠(yuǎn)程備份(還原)SQL2000數(shù)據(jù)庫(kù) SQL2000數(shù)據(jù)庫(kù)遠(yuǎn)程導(dǎo)入(導(dǎo)出)數(shù)據(jù) SQL2000和SQL2005數(shù)據(jù)庫(kù)服務(wù)端口查看或修改 修改Sql Server唯一約束教程 SQL Server 2005降級(jí)到2000的正確操作步驟 sql server系統(tǒng)表?yè)p壞的解決方法 淺談JSP JDBC來(lái)連接SQL Server 2005的方法