VB访问SQL Server数据库技术全揭密
生活随笔
收集整理的這篇文章主要介紹了
VB访问SQL Server数据库技术全揭密
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
VB訪問SQL Server數據庫技術全揭密
2006-08-03 05:00作者:出處:電子技術責任編輯:方舟 摘 要:本文討論了Visual Basic應用程序訪問SQL Server數據庫的幾種常用的方法,分別說明了每種方法的內部機理并給出了每種方法的一個簡單的實例,最后比較了每種方法性能和優缺點。
一、引言
SQL Server是微軟推出的中小型網絡數據庫系統,是目前最常用的數據庫系統之一。隨著SQL Server網絡數據庫應用程序日益增多,這種Web數據庫應用系統的正常運行一般依賴于已存在的用戶數據庫。創建維護數據庫的工作可用SQL Server提供的SQL Enterprise Manager工具來進行,如能提供一種定制的數據庫管理工具,通過管理應用程序來管理數據庫及其設備,對用戶來說無疑是最理想的。
Visual Basic作為一種面向對象的可視化編程工具,具有簡單易學,靈活方便和易于擴充的特點。而且Microsoft為其提供了與SQL Server通信的API函數集及工具集,因此它越來越多地用作大型公司數據和客戶機—服務器應用程序的前端,與后端的Microsoft SQL Server相結合,VB能夠提供一個高性能的客戶機—服務器方案。
二、VB訪問SQL Server數據的常用方法
使用Visual Basic作為前端開發語言,與SQL Server接口有幾種常用的方法,即:
①數據訪問對象/Jet
②為ODBC API編程
③使用SQL Server的Visual Basic庫(VBSQL)為DB庫的API編程
④RDO 遠程數據對象(RemoteData Objects)
⑤ADO 數據對象(Active Data Objects)
1、數據訪問對象/Jet
VB支持Data Access Objects(DAOs)的子集。DAO的方法雖然不是性能最好的管理客戶機—服務器之間的對話方式,但它的確有許多優點。DAO/Jet是為了實現從VB訪問Access數據庫而開發的程序接口對象。使用DAOs訪問SQL Server的過程如下:應用程序準備好語句并送至Jet,Jet引擎(MASJT200.DLL)優化查詢,載入驅動程序管理器并與之通訊,驅動程序管理器(ODBC.DLL)通過調用驅動器(SQLSRVR.DLL)的函數,實現連接到數據源,翻譯并向SQL Server提交SQL語句且返回結果。下面是一個用DAOs訪問SQL Server的VB實例。
注釋: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 |
上述例子是以非獨占、非只讀方式打開sales數據庫,并檢索Customers表中的所有字段。OpenDatabase函數的最后一個參數是ODBC連接字符串參數,它指明了Microsoft Access連接到SQL Server所需要知道的一些內容。其中“DSN”為數據源名,“WSID”為工作站名,“DATABASE”為所要訪問的數據庫名。
2、利用ODBC API編程
ODBC(Open Database Connectivity)的思想是訪問異種數據庫的一種可移植的方式。與數據資源對話的公用函數組裝在一個稱為驅動程序管理器(ODBC.DLL)的動態連接中。應用程序調用驅動程序管理器中的函數,而驅動程序管理器反過來通過驅動器(SQLSRVR.DLL)把它們送到服務器中。
下面的代碼使用上面一些函數先登錄到一個服務器數據庫,并為隨后的工作設置了語句句柄。
| 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注釋:t happen!" End If If SQLAllocConnect(giHEnv,giHDB)<>SQL_SUCCESS Then MsgBox "SQL Server couldn注釋:t connect!" End If myConnection="DSN=myServer;UID=LCL;PWD=;APP=ODBCTest;WSID=LCL;DATABASE=sales" 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對DB庫API編程
DB庫是SQL Server的本地API,SQL Server的Visual Basic庫(VBSQL)為Visual Basic程序員提供API。從一定意義上說,VBSQL是連接Visual Basic程序到SQL Server的性能最好最直接的方式。VBSQL包含以下三個文件:
VBSQL.VBX: 包含庫函數,具有訪問重要的消息和處理錯誤的能力
VBSQL.BI:包括所有的常量和變量說明
VBSQL.HLP:Windows幫助文件,使用VBSQL的指南
使用VBSQL時,必須將VBSQL.BI加入到Visual Basic工程文件中,并確保VB程序運行時有VBSQL.VBX文件。
一般的DB庫API編程的過程是這樣的:先通過調用SqlInit對DB庫進行初始化,再調用SqlConnection打開一個連接,然后就可做一些工作。下面的代碼是一個初始化DB庫并登錄到服務器的通用例程。
| 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) 注釋:關閉已打開的連接 giSqlConn=SqlOpenConnection(gsServerName, gsLoginID, gsPassword, ProgramName, ProgramName) If giSqlConn<>0 Then liresuit=SqlUse(giSqlConn,"Sales") Else LogintoServer=FAIL End If End Function |
總結
以上是生活随笔為你收集整理的VB访问SQL Server数据库技术全揭密的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Visual C++设计UDP协议通讯示
- 下一篇: Visual Basic中实现带预览的对