《VB应用程序访问SQL方法探讨.pdf》由会员分享,可在线阅读,更多相关《VB应用程序访问SQL方法探讨.pdf(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 29VB应用程序访问SQL Server 方法探讨 VB应用程序访问SQL Server 方法探讨 吐鲁番地区气象局 张 凤 林志新 肖 婧 【摘要】【摘要】:本论文讨论了Visual Basic 应用程序访问SQL Server 数据的几种常用的方法,分别说明了每种方法的内部机理并给出了每种方法的一个简单的实例,最后比较了每种方法 的性能和优缺点。【关键词】【关键词】:VB 访问 SQL Server Microsoft Visual Basic (简称VB)作为一种面向对象的可视化编程工具,具有简明易学的,灵活方便和易于扩充的特点。而且Microsoft 为其提供了与SQL Server
2、通信的API 函数集及工具集。因此它越来越多地用作大型公司数据和客户机/服务器应用程序的前端。与后端的Microsoft SQL Server相结合,VB能够提供一个快捷、高效的客户机/服务器方案。使用Visual Basic作为前端开发语言,与SQL Server接口有三种常用的方法,即:1.数据访问对象DAO即Date Access Object 2.ODBC API 编程 3.使用L Server的Visual Basic库(VBSQL)为DB库API编程 本文将讨论这三种应用程序管理S Server 数据的方法,并比较每种方法的性能和优缺点。、数据访问对象()、数据访问对象()isua
3、l Basic支持ata Access Objects(DAOs)的子集 DAO的方法虽然不是性能最好的管理客户机,因为它看上去是专为Access数据库(MDB)而设计的,实际上它可能以直接打开现在的任何ODBC驱动器的数据库,包括SQL Server。使用DAO访问SQL Server的过程如下:应 用 程 序 准 备 好 语 句 并 送 至 DAO,DAO引 擎(MASJT200.DLL)优化查询,载入驱动程序管理器并与之通讯,驱动程序管理器(ODBC.DLL)通过调用驱动器(SQLSRVR.DLL)的函数,实现连接到数据源,翻译并向SQL Server提交SQL语句且返回结果。下面是一个
4、用DAOs访问SQL Server的VB实例。定义全局变量 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表中的所有子段OpenDatab
5、ase函数的最后一个参数是ODBC连接字符串参数,它指明了Microsoft Access连接到SQL Server所需要知道的一些内容其中DSN为数据源名,WSID为工作站名,DATABASE为所有访问的数据库名。二、用ODBC API编程 二、用ODBC API编程 ODBC(Open Database Connectivity)的思想是访问异种数据库的一种可移植的方式。与数据资源对话的公用函数组装在一个称为驱动程序管理器(ODBC.DLL)的动态连接中应用程序调用驱动程序管理器中的函数,而驱动程序管理器反过来通过驱动器(SQLSRVR.DLL)把它们送到服务器中。用ODBC API编程,
6、一般要用到以下一些函数下面列出了常用的函数以及他们的功能。30下面的代码使用上面一些函数先登录到一个服务器数据库,并为随后的工作设置了语句句柄。Global giHEnv As Long Globar giHDB As Long Global giHStmt As long Dim myResult As integer Dim myConnection As Srting Dim myBuff As sting*255 Dim myBufflen As Integer If SQL AllocEnv(giHEnv)SQL_SUCCESS Then MsgBoX“本地分配表出错!”End if
7、 If SQLiiocConnect(giHEnv,giHDB)SQL-SUCCESS Then Msgbox“SQL Server不能正常连接!”End if MyConnecttion=“DSN=myServer;APP=ODBCText;WSID=LCL;DATABASE=sales”MyResult=SQLDriverConnect(giHDB,Text,forml.hWnd,myConnection.len(myConnection),myBuff,256,myBufflen,SQL-DRIVER-COMPLETE-REQUIED)MyResult=SQLAllocStmt(giHD
8、S,giHStmt)MyResult=SQLFreeStmt(giHStmt.SQL-COLSE)RsSQL=“Select*from Customers Where City=“Wuhan”MyResult=SQLExecDirect(giHStmt,rsSQL,Len(rsSQL)三、使用VBSQL对DB库API编程 三、使用VBSQL对DB库API编程 DB库是SQL Server的本地API,SQL Server的Visual Basic库(VBSQL)为Visual Basic程序员提供API。从一定意义上说,VBSQL是连接Visual Basic程序到SQL Server的性能最
9、好最直接的方式。VBSQL包含以下三个文件:VBSQL.VBX:包含库函数,具有访问重要的消息和处理错误的能力 VBSQL.BI:包括所有的常量和变量说明 VBSQL.HLP:Windows帮助文件,使用VBSQL的指南 使用VBSQL时,必须将VBSQL.BI加入到Visual Basic工程文件中,并确保VB程序运行时有VBSQL.VBX文件。一般的DB库API编程的过程是这样的:先通过调用Sqllnit对DB库进行初始化,再调用SqlConnection打开一个连接,然后就可做一些工作。下面的代码是一个初始化DB库并登录到服务器的通用例程。Private Sub Initialize A
10、pplication()DBLIB-VERSION=SqlInit()If DBLIB-VERSION=“Then MsgBox(“不能初始化DBLIB!程序将终止!”,MB-ICONEXCLAMATION)End End if 函数 功能 SQLALLocEnv 初始化ODBC环境,返回环境句柄SQLALLocConnect 为连接句柄分配内存并返回连接句柄 SQLConnect 连接一个SQL数据资源 SQLDriverConnect 连接一个SQL数据资源,允许驱动器向用户询问信息 SQLALLocStmt 为语句句柄分配内存并返回语句句柄 SQLExecDirect 把SQL语句送到服
11、务器 SQLFetchAdvances 到结果集的下一行(或第一行)SQLGetData 从结果集的特定的一列取回数据SQLFreeStmt 释放与语句句柄相关的资源 SQLDisconnect 切断连接 SQLFreeConnect 释放与连接句柄相关的资源 SQLFreeEnv 释放与环境句柄相关的资源 31End sub Private Function LoginToServer()As interger LoginToServer=SUCCEED Status=SqlSetloginTime(loginTimeOut)If gisqlConno Then SqlCLOSE(giSql
12、Conn)关闭已打开的连接 GiSqlConn=SqlOpenConnection(gsServerName,gsLoginID,gsPassword,ProgramName,-ProgramName)IfgiSqlconno Then liresult=SqlUse(giSqlConn,“Sales”)Else LogintoServer=Fales End if End Function 四、三种方法的性能比较 四、三种方法的性能比较 以上三种方法 SQL Server 的方法各有各的特点。DAOs方法是基于对象的,因而便于使用,但是它从Visual Basic到SQL Server的最慢
13、的方法。ODBC API和VBSQL方法从本质上讲是基于程序的。ODBC API方法通用性好,允许最强的互操作性,编程简单,但速度慢于 VBSQL方法。VBSQL 方法通过 VBSQL 控件,提供了重要的SQL Server前端应用程序所需的灵活性、强大功能和良好性能。它具有真正的事件驱动及错误处理能力,完全支持异步处理,游标和计算列等。这些都是VBSQL方法超出其它方法的优势,但其编程稍复杂。至于实际使用哪一种接口方式,在很大程度上依赖于用户的应用程序的具体情况而定。“美,不足取”的住宅设计 吐鲁番地区建筑规划设计有限公司 王圆杰 近年来住宅建设蓬勃发展,特别是住宅商品化、市场化以后,各种各
14、样的住宅如雨后春笋般一下都冒了出来。这些住宅无论从平面布置、立面处理以及室内外的环境质量上都与以前的住宅有了很大的变化,而各类报纸上关于房地产“楼盘”的宣传更是五花八门、争奇斗艳,这样的一派大好形势大大地推动了住宅建筑设计的发展。但同时,由于各种各样的原因,也不可避免地会出现一些设计不合理的现象。有的为了标新立异,甚至片面追求新奇、与众不同,而影响了使用甚至影响安全。这就与住宅设计最基本的原则大相径庭了。一、错层:越加越错 一、错层:越加越错 错层式的住宅近几年来已经从独立式、联立式的低层住宅发展到多层,由多层蔓延到高层。而且不但是左右错(开间方向),也出现了前后错(进深方向)。甚至在同一层同
15、一户平面中,既左右错又前后错,花哨得很。错层这种建筑设计上的一种空间处理手法最初是用在小别墅上,它们面积较大,开间、进深较大,布局比较灵活,结构抗震要求不高。为了使室内空间有些变化,或者在一个大空间中以空间高低的变化来划分出两个或多个不同使用功能的空间(如客厅、餐厅等)。在这种情况下,这是一种行之有效的处理手法。但是如果不看对象不分场合地滥用,那就欠妥了。如有的多层住宅,本来户型就不大,二室一厅或小三室一厅,100120m2左右,客厅、餐厅面积也不大,为了做出错层,把通向卧室的短走道上做出踏步,这不但没有起到空间变化的作用,反而使走道高高低低,给使用安全带来影响,特别是对老年人的夜间使用更加不便。而对于高层住宅来说,相错高度较大对结构的处理和抗震也不利,同时也增加了造价。如果在同一层平面上前后左右同时错,结构就更加不合理。