admin 管理员组文章数量: 1086019
2024年3月19日发(作者:网络工作室源码)
维普资讯
地震地磁观测与研究
第23卷 第3期
2002矩
6月
SEISM0L0GICAL AND GE0MAGNETIC
OBSER ION AND RESEARCH
V_0l 23 NO 3
Jun 2002
用VB访问SOL Server
赵辉 包淑娴
(中国郑州450000河南省地震局)
中图分类号:P3l5.69文献标识码:B文章编号:1003-3246(2002)03-0071—04
Microsoft Visual Basic(简称VB)作为一种面向对象的可视化编程工具,具有简单易学、
灵活方便和易于扩充的特点。而且Microsoft为其提供了与SQL Server通信的API函数集及
工具集。因此,它越来越多地用作大型公司数据和客户机——服务器应用程序的前端;与
后端的Microsoft SQL Server相组合,VB能够提供一个高性能的客户机——服务器方案。
使用Visual Basic作为前端开发语言,与SQL Server接口有3种常用的方法,即:
(1)数据访问对象/Jet。
(2)为ODBCAPI编程。
(3)使用SQL Server的Visual Basic库(VBSQL)为DB库API编程。
本文将讨论这3种VB应用程序管理SQL Server数据的方法,并比较每种方法的性能
和优缺点。
方法1,数据访问对象/Jet Visual Basic支持DataAccess Objects(DAOs)的子集
DAO的方法虽然不是性能最好的管理客户机——服务器之间的对话方式,但它确有许
多优点。使用DAOs访问SQL Server的过程如下:应用程序准备好语句并送至Jet,Jet引
擎(MASJT200.DLL)优化查询,载入驱动程序管理器并与之通讯,驱动程序管理器
(ODBC.DLL)通过调用驱动器(SQLSRVR.DLL)的函数,实现连接到数据源,翻译并向
SQL Server提交SQL语句且返回结果。下面是一个用DAOs访问SQL Server的VB实例。
、From Declarations
Dim mydb as Database
Dim mydynaset s aDynaset
Private Sub from
_
Load()
Set
Mydb=Open Database(",False,False,”ODBC;DSN=Myserver;WSID LCL;
DATABASE=sales”1
Set mydynaset-=mydb CreateDynaset( Select from Customers 、
End Sub
上述例子是以非独占、非只读方式打开sales数据库,并检索Customers表中的所有字
段。OpenDatabase函数的最后一个参数是ODBC连接字符串参数,它指明了Microsoft Access
本文收到日期:2001—10—07
维普资讯
72 地震地磁观测与研究 23卷
连接到SQL Server所需要知道的一些内容。其中“DSN”为数据源名,“WSID”为工作站
名,“DATABASE”为所要访问的数据库名。
方法2,用ODBC API编程
ODBC(Open Database Connectivity)的思想是访问异种数据库的一种可移植的方式。
与数据资源对话的公用函数组装在一个称为驱动程序管理器(ODBC.DLL)的动态连接中。
应用程序调用驱动程序管理器中的函数,而驱动程序管理器反过来通过驱动器
(SQLSRVR.DLL)把它们送到服务器中。
用ODBC API编程,一般要用到以下一些函数。下面列出了常用的函数以及它们的功
能。
函数: 功能:
SQLALLocEnv
SOLALLocConnect
SQLConnect
SQLDriverConnect
SQLALLocStmt
SQLExecDirect
SQLFetchAdvances
SQLGetData
SQLFreeStmt
SQLDisconnect
初始化ODBC环境,返回环境句柄;
为连接句柄分配内存并返回连接句柄;
连接一个SQL数据资料;
连接一个SQL数据资料,允许驱动器向用户询问
信息;
为语句句柄分配内存并返回语句句柄;
把SQL语句送到服务器;
到结果集的下一行(或第一行);
从结果集特定的一列取回数据;
释放与语句句柄相关的资源;
切断连接;
SQLFreeConnect
SQLFreeEnv
句句柄。
Global giHEnv s aLong
Global giHDB as Long
Global giHStmt s Long a
Dim myResult as integer
Dim myConnection as String
释放与连接句柄相关的资源;
释放与环境句柄相关的资源。
下面的代码使用上面一些函数先登录到一个服务器数据库,并为随后的工作设置了语
Dim myBuff s Striang 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”Allocation couldn’t happen!”
Endif
MyrConnection=”DSN=myServer;UID=1c1;PWD=;APP=ODBCTest;WSID LCL;
维普资讯
3期
D IABASE=sales”
赵辉等:用VB访问SQLServer
MyResult=SQLDriverConnect(giHDB,Test,from1.hWnd,myConnection.1en(myConnection)
MyBuff,256,myBuflfen,SQL
DRIVER
_
COMLETE
__
REQUIED)
MyResult=SQLAllocStmt(giHDS,giHStmt)
MyResult=SQLFreeStmt(giHStmt,SQL-_COLSE)
RsSQL=”Select from Customers Where City=”Wuhan””
MyResult=SQLExecDirect(giHStmt,rsSQL,Len(rsSQL))
方法3,使用VBSQL对本地API,SQL Server的Visual Basic库(VBSQL)为Visual Basic
程序员提供API。从一定意义上说,VBSQL是连接Visual Basic程序到SQL Server的性能
最好最直接的方式。VBSQL包含以下3个文件。
VBSQL.VBX包含库函数,具有访问重要的消息和处理错误的能力。
VBSQL.BI包括所有的常量和变量说明。
VBSQL.HLP Windows帮助文件,使用VBSQL的指南。
使用VBSQL时,必须将VBSQL.BI加入到Visual Basic工程文件中,并确保VB程序
运行时有VBSQL.VBX文件。
个典型的VBSQL对话中,一般要用到以下这些函数。
一
函数: 功能:
Sqlinit
SqlOpenConnection
SqlCmd
SqlExec
Sqlresults
SqlNextRow
SqlData
SqlClose
SqlExit
SqlWinExit
一
在客户机上装载DB库;
打开服务器连接,返回连接句柄;
在客户机上建立批处理命令;
向服务器提交批处理命令;
把客户机定位在第一条(或下一条)结果集的开
端:
驱动每个结果集的行之间的循环;
访问一个特定的连接;
切断特定的连接:
切断所有打开;
卸下DB库。
般的DB库API编程的过程是这样的:先通过调用Sqllnit对DB库进行初始化,再
调用SqlConnection打开一个连接,然后就可做一些工作。下面的代码是一个初始化DB库
并登录到服务器的通用例程。
Private Sub initializeApplication()
DBLIB
_
VERSION Sqlinit()
—
alize DBLIB!
If DBLIB
VERSION=””could not initi
Exit application,rr MB
——
ICONEXCLAMATION
End
End if
EndSub
Private Function LoginToServer0 s ianteger
维普资讯
74 地震地磁观测与研究 23卷
LoginToServer=SUCCEED
Status%=SqlSetloginTime%(1oginTimeOut)
If giSQICom<>0 Then
SqlClose(giSqlConn)、关闭已打开的连接
GiSqlConn=SqlOpenConnection(gsServerName,gsLoginlD,gsPassword,
ProgramName,ProgramName)
If giSqlConn<>0 Then
Iiresult=SqlUse(giSqlConn,”Sales”)
Else
LogintoServer=FALL
End if
End Function
性能比较:以上3种访问SQL Server的方法各有其特点。DAOs的方法是基于对象的,
因而便于使用,但它是从Visual Basic到SQL Server最慢的方式。ODBC API和VBSQL方
法从本质上讲是基于程序的。ODBCAPI方法通用性好,允许最强的互操作性,编程简单,
但速度慢于VBSQL方法。VBSQL方法通过VBSQL控件,提供了重要的SQL Server前端
应用程序所需的灵活性、强大功能和良好性能。它具有真正的事件驱动及错误处理能力,
完全支持异步处理、游标和计算列等。这些都是VBSQL方法超出其他方法的优势,但其编
程稍复杂。至于实际使用哪一种接口方式,在很大程度上依赖用户的应用程序的具体情况
而定。
Access SQL database using Visual Basic
Zhao Hui and Bao Shuxian
(Seismological Bureau ofHenan Province,Zhengzhou 450000,China)
版权声明:本文标题:用VB访问SQL Server 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1710854582a576420.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论