国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

VB訪問SQLServer的探討

2019-11-18 17:48:16
字體:
供稿:網(wǎng)友
摘要

本文討論了VisualBasic應(yīng)用程序訪問SQLServer數(shù)據(jù)的幾中常用的方法,分別說明了每種方法的內(nèi)部機理并給出了每種方法的一個簡單的實例,最后比較了每種方法的

性能和優(yōu)缺點。

引言

MicrosoftVisualBasic(簡稱VB)作為一種面向?qū)ο蟮目梢暬幊坦ぞ撸哂泻唵我讓W(xué)的,靈活方便和易于擴充的特點。而且Microsoft為其提供了與SQLServer通信的API函數(shù)集及工具集。因此它越來越多地用作大型公司數(shù)據(jù)和客戶機—服務(wù)器應(yīng)用程序的前端。與后端的MicrosoftSQLServer相結(jié)合,VB能夠提供一個魯棒的、高性能的客戶機—服務(wù)器方案。

使用VisualBasic作為前端開發(fā)語言,與SQLServer接口有三種常用的方法,即:
*數(shù)據(jù)訪問對象/Jet
*為ODBCAPI編程
*使用SQLServer的VisualBasic庫(VBSQL)為DB庫API編程
本文將討論這三種VB應(yīng)用程序管理SQLServer數(shù)據(jù)的方法,并比較每種方法的性
能和優(yōu)缺點。

方法1.數(shù)據(jù)訪問對象/JetVisualBasic支持DataaccessObjects(DAOs)的子集。DAO的方法雖然不是性能最好的管理客戶機—服務(wù)器之間的對話方式,但它確有許多優(yōu)點。使用DAOs訪問SQLServer的過程如下:應(yīng)用程序準備好語句并送至Jet,Jet引擎(MASJT200.DLL)優(yōu)化查詢,載入驅(qū)動程序管理器并與之通訊,驅(qū)動程序管理器(ODBC.DLL)通地調(diào)用驅(qū)動器(SQLSRVR.DLL)的函數(shù),實現(xiàn)連接到數(shù)據(jù)源,翻譯并向SQLServer提交SQL語句且返回結(jié)果。下面是一個用DAOs訪問SQLServer的VB實例。

'FormDeclarations
DimmydbAsDatabase
DimmydynasetAsDynaset
EndSub

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

“DATABASE”為所要訪問的數(shù)據(jù)庫名。

方法2.用ODBCAPI編程

ODBC(OpenDatabaseConnectivity)的思想是訪問異種數(shù)據(jù)庫的一種可移植的方式。與數(shù)據(jù)資源對話的公用函數(shù)組裝在一個稱為驅(qū)動程序管理器(ODBC.DLL)的動態(tài)連接中。應(yīng)用程序調(diào)用驅(qū)動程序管理器中的函數(shù),而驅(qū)動程序管理器反過來通過驅(qū)動器反過來通來驅(qū)動器(SQLSRVR.DLL)把它們送到服務(wù)器中。用ODBCAPI編程,一般要用到以下一些函數(shù)。下面列出了常用的函數(shù)以及它們的功能。
函數(shù)功能
SQLALLocEnv初始化ODBC環(huán)境,返回環(huán)境句柄
SQLALLocConnect為連接句柄分配內(nèi)存并返回連接句柄
SQLConnect連接一個SQL數(shù)據(jù)資源
SQLDriverConnect連接一個SQL數(shù)據(jù)資源,允許驅(qū)動器向用戶詢問信息
SQLALLocStmt為語句句柄分配內(nèi)存并返回語句句柄
SQLExecDirect把SQL語句送到服務(wù)器
SQLFetchAdvances到結(jié)果集的下一行(或第一行)
SQLGetData從結(jié)果集的特定的一列取回數(shù)據(jù)
SQLFreeStmt釋放與語句句柄相關(guān)的資源
SQLDisconnect切斷連接
SQLFreeConnect釋放與連接句柄相關(guān)的資源
SQLFreeEnv釋放與環(huán)境句柄相關(guān)的資源
下面的代碼使用上面一些函數(shù)先登錄到一個服務(wù)器數(shù)據(jù)庫,并為隨后的工作設(shè)置了語句
句柄。
GlobalgiHEnvAsLong
GlobalgiHDBAsLong
GlobalgiHStmtAsLong
DimmyResultAsinteger
DimmyConnectionAsSrting
DimmyBuffAsString*256
DimmyBufflenAsInteger
IfSQLA||ocEnv(giHEnv)<>SQL_SUCCESSThen
MsgBox"A||ocationcouldn'thappen!"
Endif
ifSQL||ocConnect(giHEnv,giHDB)<>SQL_SUCCESSThen
MsgBox"SQLServercouldn'tconnect!"
Endif
myConnection="DSN=myServer;UID=|c|;PWD=;APP=ODBCTest;WS|D=LCL;DATABASE=sales"
myResult=SQLDriverConnect(giHDB,Test,form1.hWnd,myConnection.len(myConnection),
myBuff,256,myBufflen,SQL_DRIVER_COMPLETE_REQUIED)
myResult=SQLA||ocStmt(giHDS,giHStmt)
myResult=SQLFreeStmt(giHStmt,SQL_COLSE)
rssQL="Select*fromCustomersWhereCity="Wuhan""
myResult=SQLExecDirect(giHStmt,rsSQL,Len(rsSQL))

方法3.使用VBSQL對DB庫API編程

DB庫是SQLServer的本地API,SQLServer的VisualBasic庫(VBSQL)為VisualBasic程序員提供API。從一定意義上說,VBSQL是連接VisualBasic程序到SQLServer的性能最好最直接的方式。VBSQL包含以下三個文件:

VBSQL.VBX包含庫函數(shù),具有訪問重要的消息和處理錯誤的能力
VBSQL.BI包括所有的常量和變量說明
VBSQL.HLPWindows幫助文件,使用VBSQL的指南
使用VBSQL時,必需將VBSQL.BI加入到VisualBasic工程文件中,并確保VB程序運行時有
VBSQL.VBX文件。
一個典型的VBSQL對話中,一般要用到以下這些函數(shù)。
函數(shù)功能
Sqllnit在客戶機上裝載DB庫
SqlOpenConnection打開服務(wù)器連接,返回連接句柄
SqlCmd在客戶機上建立批處理命令
SqlExec向服務(wù)器提交批處理命令
Sqlrexu|ts把客戶機定位在第一條(或下一條)結(jié)果集的開端
SqlNextRow驅(qū)動每個結(jié)果集的行之間的循環(huán)
SqlData訪問一個特定列的數(shù)據(jù)
SqlC|ose切斷特定的連接
SqlExit切斷所有找開的連接
SqlWinExit卸下DB庫
一般的DB庫API編程的過程是這樣的:先通過調(diào)用SqlInit對DB庫進行初始化,再調(diào)用
SqlConnection打開一個連接,然后就可做一些工作。下面的代碼是一個初始化DB庫并
登錄到服務(wù)器的通用例程。
PrivateSub|nitia|izeApp|ication()
DBL|B-VERS|ON=Sq||nit()
|fDBL|B_VERS|ON=""Then
MsgBox"Couldnotinitia|izeDBL|B!Exitapp|ication.",MB_|CONEXCLAMAT|ON
End
Endif
EndSub
PrivateFunctionLoginToServer()Asinteger
loginToServer=SUCCEED
Status=Sq|SetloginTime(loginTimeOut)
|fgiSq|Conn<>0Then
Sq|C|ose(giSq|Conn)'關(guān)閉已打開的連接
giSq|Conn=Sq|OpenConnection(gsServerName,gsLogin|D,gsPassWord,ProgramName,ProgramName)
|fgiSq|Conn<>oThen
|iresu|t=Sq|Use(giSq|Conn,"Sales")
Else
LogintoServer=FA|L
End|f
EndFunction

性能比較

以上三種訪問SQLServer的方法各有各的特點。DAOs方法是基于對象的,因而便于使用,但是它從VisualBasic到SQLServer的最慢的方式。ODBCAPI和VBSQL方法從本質(zhì)上講是基于程序的。ODBCAPI方法通用性好,允許最強的互操作性,編程簡單,但速度慢于VBSQL方法。VBSQL方法通過VBSQL控件,提供了重要的SQL`Server前端應(yīng)用程序所需的靈活性、強大功能和良好性能。它具有真正的事件驅(qū)動及錯誤處理能力,完全支持異步處理、游標和計算列等。這些都是VBSQL方法超出其它方法的優(yōu)勢,但其編程稍復(fù)雜。至于實際使用哪一種接口方式,在很大程度上依賴于用戶的應(yīng)用程序的具體情況而定。->


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 营口市| 若羌县| 雷波县| 枣庄市| 泰宁县| 德清县| 东乡县| 镇康县| 同心县| 北流市| 永靖县| 林西县| 蓝山县| 富平县| 宁武县| 廉江市| 金寨县| 新龙县| 彭阳县| 巴林左旗| 大方县| 丽水市| 若羌县| 长海县| 政和县| 普陀区| 登封市| 乌拉特前旗| 抚宁县| 许昌县| 门源| 龙泉市| 嘉黎县| 巨野县| 桃江县| 乌苏市| 深州市| 聂拉木县| 聂荣县| 自贡市| 灵璧县|