VB访问SQL Server数据库技术全揭密

2006-08-03 05: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"
   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  

VB访问SQL Server数据库技术全揭密相关推荐

  1. Serverless 解惑——函数计算如何访问 SQL Server 数据库

    函数计算(Function Compute):函数计算 是事件驱动的全托管计算服务.使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码.函数计算为您准备好计算资源,弹性地可靠地运行任务 ...

  2. vfp spt连接mysql_VFP中用SPT访问SQL Server数据库_mysql

    VFP因它简单易学,可快速建立应用软件而深受广大程序员喜爱,但其数据库系统不安全也令广大用户非常头痛.随着MS SQL Server数据库系统的推广应用,其强大的安全性能普遍受到好评.笔者在长期的编程 ...

  3. 视频教程-C#SQL Server数据库技术-C#

    C#SQL Server数据库技术 二十多年的企业管理软件开发经历,熟知管理软件的整个开发流程,熟练掌握VFP语言,掌握VB语言,了解JAVA.asp.net.CSS.HTML/HTML5等语言,使用 ...

  4. [导入]VB实现SQL Server数据库备份/恢复

    VB实现SQL Server数据库备份/恢复 文章来源:http://blog.csdn.net/zjcxc/archive/2004/03/21/20099.aspx

  5. 通过VB向SQL Server数据库中录入数据

    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 一.数据录入 通过VB向SQL Se ...

  6. Java案例:利用JDBC访问SQL Server数据库

    Java案例:利用JDBC访问SQL Server数据库 1.以sa为登录名连接数据库服务器 2.附加选课数据库Xk,如下图所示: 3.启动Eclipse,创建Java项目TestDB

  7. SQL Server数据库技术大全——08讲 PD的使用

    SQL Server数据库技术大全--08讲   PD的使用 讲解了使用PowerDesigner进行数据库建模,包括如何建立概念模型.如何通过概念模型生成物理模型以及如何通过物理模型生成数据库脚本的 ...

  8. SQL Server数据库技术大全——14讲 执行计划

    SQL Server数据库技术大全--14讲  执行计划 讲解了如何查看统计信息,如何查看执行计划以及如何简单的优惠数据库. [hjp2=500,375,true]http://player.youk ...

  9. SQL Server 数据库技术及应用

    数据库基本概念 采用思维导图的方式为你讲述:SQL Server 数据库技术及应用                         导学 随着大数据.云计算.物联网.人工智能等信息技术的飞速发展,数据 ...

最新文章

  1. python小项目实例流程-python实现的简单RPG游戏流程实例
  2. sap 判断字串是不是为数字
  3. 无状态会话的ejb_Java EE状态会话Bean(EJB)示例
  4. vue脚手架v-cli,第一个vue程序
  5. 如何让nginx执行python代码_生产环境部署Python语言代码(django+uwsgi+nginx)
  6. 数据结构与算法——二叉排序树详解以及代码实现
  7. 19 CO配置-控制-产品成本控制-产品成本计划编制-定义日期控制
  8. python学习精华——成长篇
  9. android5.0百度地图,百度地图安卓版5.0.0 官方版
  10. 在html中做框架的页面,网页中的框架(详解)
  11. win10 python安装以及编辑器pycharm安装
  12. DSP中EALLOW,EDIS,EINT,DINT,ERTM,DRTM的作用
  13. opencv-图像处理1 图像基本操作
  14. 你真的了解重排和重绘吗?
  15. javplayer 使用教程_视频教程 | 你所不知道的示波器使用技巧
  16. android ota权限,Android手机Root后不能接收OTA?
  17. 关于版权声明的写法 (转)
  18. Kali Linux 安装 Remmina 远程桌面并使用
  19. macbook上好用的解压软件_Mac压缩与解压缩软件哪款好用?
  20. jQuery获取div中的内容

热门文章

  1. cfs调度算法JAVA实现_关于CFS/BFS调度算法
  2. 掉一根头发,搞定二叉排序(搜索)树
  3. 使用JS动态生成表格数据和分页显示
  4. 使用netty搭建一个简单的聊天室
  5. Oracle sql解析类型, 软解析和硬解析浅析
  6. 面试必备算法题集之「动态规划」Ⅰ
  7. java util下的并发包_jdk并发包下:使用java.util.concurrent.Executor线程池
  8. linux抓源地址,【Linux】apt-get 源地址汇总
  9. 11.17-20 | KubeCon 北美 2020 阿里巴巴完整议题
  10. 如何使用 Istio 进行多集群部署管理:单控制平面 Gateway 连接拓扑