网络编程
位置:首页>> 网络编程>> 数据库>> VB应用程序访问SQL Server的常用方法

VB应用程序访问SQL Server的常用方法

作者:doorsir  发布时间:2009-01-21 14:28: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"
 
2 VB与SQL

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

0
投稿

猜你喜欢

  • 在SQL Server中进行开发会让你身处险地,并且寻找快速解决方案。我们编辑了前十名关于SQL Server开发的常见问题。对常见的针对表
  • 问题:我想每日从数据库里导出一些数据,内容基本上都是一样的,只是时间不同,比如导出一张表wjzcreate table wjz(id int
  • 只有mdf文件的数据库附加失败的修复 附加时报如下错误: 服务器: 消息 1813,级别 16,状态 2,行 1 未能打开新数据库 '
  • 几天前,想把上个月校园招聘的餐旅费报销一下。结果在公司内网的报销系统折腾了三个半小时才搞定。看看自己报销的金额:802块。觉得挺无奈,花了三
  • Frontpage中的回车键有三种:enter、shift+enter、ctrl+enter。enter键对应于HTML中的<p>
  • 在http规则中用404来表示某个页面不能访问,一般来说,网站的404错误页面都是IIS或APACHE默认的页面,千篇一律,非常单调。由于可
  • 淘宝招聘的一个css题目:css样式控制div水平垂直居中方法;<!DOCTYPE html PUBLIC "-//W3C/
  • 1.1.1 摘要 如果说要对数据库进行优化,我们主要可以通过以下五种方法,对数据库系统进行优化。 1. 计算机硬件调优 2. 应用程序调优
  • 本文介绍了6个asp常用的判断函数的语法和使用方法,有IsArray 函数,IsDate 函数 ,IsEmpty 函数,IsNull 函数,
  • 报表服务器数据库可以为一个或多个报表服务器实例提供内部存储。因为报表服务器数据库架构可能会因为推出新的 Reporting Services
  • 此文刊登在《程序员》三月期,有删改提到安全问题,首先想到应付这些问题的应该是系统管理员以及后台开发工程师们,而前端开发工程师似乎离这些问题很
  • 见过很多网站,在设计的时候给了用户很大的自由度,我个人并不赞同这种做法。最简单的例子,圈网。我在研究圈网的时候注册完成后圈网给了我一个搜索框
  • 内容摘要:为什么要什么XML文件:其优势就是处理该XML数据的文档可以是静态文档,比如HTML文件通过Javascript、XMLDOM来解
  • 当然首先得去下载ASPupload 程序,安装后使用!官方网站下载:http://www.aspupload.com/使用ASP实现文件上载
  •    这个代表显示宽度整数列的显示宽度与mysql需要用多少个字符来显示该列数值,与该整数需要的存储空间的大小都没有关系
  • 在使用操作XML文件时,我们可以使用Load方法直接加载xml文件即可,在ie和ff下通用。但是是XML字符串,则在两种浏览器下就会有所不同
  • 在Windows vista之前的微软操作系统的地址栏与浏览器的地址栏是一样的,也是面包屑般的自上而下的线性等级形,如果想从D盘跳到C盘是不
  • 这种情况在Access下可以通过,但SQL则不行,在百度搜索解决方法,发现N多人出现同样问题却找不到解决办法: 代码如下:set 
  • 上个月,我写了一篇关于微软如何在向jQuery贡献代码的文章,也谈到了在第一批贡献的代码中的一些功能:jQuery模板和数据链接支持.今天,
  • 最近在做文章页盖楼显示的项目,数据来源是跟贴系统生成的UTF8格式的JSON数据。文章页的HTML编码格式是GB2312,在javascri
手机版 网络编程 asp之家 www.aspxhome.com