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) 


本文标签: 连接 函数 句柄 方法 客户机