*数据访问对象/Jet
*为ODBC API编程
*使用SQL Server的Visual Basic库(VBSQL)为DB库API编程
本文将讨论这三种VB应用程序管理SQL Server数据的方法,并比较每种方法的性
能和优缺点。
方法1.数据访问对象/JetVisual Basic支持Data Access Objects(DAOs)的子集。DAO的
方法虽然不是性能最好的管理客户机—服务器之间的对话方式,但它确有许多优点。使
用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("",Fa|se,Fa|se,"ODBC;DSN=Myserver;WSID=LCL;DATABASE=sa|es")
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)把它们送到服务器中。
用ODBC API编程,一般要用到以下一些函数。下面列出了常用的函数以及它们的功能。
函数 功能
SQLALLocEnv 初始化ODBC环境,返回环境句柄
SQLALLocConnect 为连接句柄分配内存并返回连接句柄
SQLConnect 连接一个SQL数据资源
SQLDriverConnect 连接一个SQL数据资源,允许驱动器向用户询问信息
SQLALLocStmt 为语句句柄分配内存并返回语句句柄
SQLExecDirect 把SQL语句送到服务器
SQLFetchAdvances 到结果集的下一行(或第一行)
SQLGetData 从结果集的特定的一列取回数据
SQLFreeStmt 释放与语句句柄相关的资源
SQLDisconnect 切断连接
SQLFreeConnect 释放与连接句柄相关的资源
SQLFreeEnv 释放与环境句柄相关的资源
下面的代码使用上面一些函数先登录到一个服务器数据库,并为随后的工作设置了语句
句柄。
G|oba| giHEnv As Long
G|oba| giHDB As Long
G|oba| giHStmt As Long
Dim myResult As integer
Dim myConnection As Srting
Dim myBuff As String*256
Dim myBufflen As Integer
If SQLA||ocEnv(giHEnv)<>SQL_SUCCESS Then
MsgBox"A||ocation couldn't happen!"
End if
if SQL||ocConnect(giHEnv,giHDB)<>SQL_SUCCESS Then
MsgBox "SQL Server couldn't connect!"
End if
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*from Customers Where City="Wuhan""
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文件。

