设为首页   |  加入收藏夹 快速导航:  热门文章  |  最新文章  |  梦想博客  
当前位置:编程之家 -> 文章频道 ->vb 
站内搜索:  

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

作者:佚名 来源:不详 整理日期:2006-08-17


  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  

  4、RDO 远程数据对象(RemoteData Objects)

  要讨论RDO,就必然要谈到DAO。RDO是从DAO派生出来的,但两者很大的不同在于其数据库模式。DAO是针对[记录(Records)]和[字段( Fields)],而RDO是作为[行(Rows)]和[列(Columns)]来处理。也就是说DAO 是ISAM模式,RDO是关系模式。此外DAO是访问Access的Jet引擎(Jet是ISAM)的接口,而RDO则是访问ODBC的接口。

  可见,RDO是综合了DAO/Jet、VBSQL/DBLib以及ODBC的优点的对象(Object)。需要强调的是,RDO是包裹着ODBC API的一层薄薄的外壳, 被设计成在后台(服务器端)有数据库存在的前提下运行,同时也是针对SQL Server和Oracle而特别设计的。

  RDO的优势在于它完全被集成在VB之中。此外,直接访问SQL Server存储过程、完全支持T-SQL、T-SQL调试集成在开发环境中、Visual Database Tools的集成化等,也是RDO的长处。

  在RDO的对象和集合中,有很多对数据库的状态和设定进行操作的属性(Property),以及对数据库进行操作的方法(Method)。利用这些,从RDO2.0起就可以开发事件驱动的数据库应用程序。

  RDO对象与VB中其他对象的概念相同。与VB用的ActiveX控件(以往称为Custom Control或OCX、VBX)相似的是,RDO也带有属性和方法;但同Spread、InputMan等普遍应用的ActiveX控件不同的是,RDO没有自己的用户界面,因而可以和VB标准的Timer控件归为同一类。当然也可以将RDO看作调用ODBC API函数,进而对后台数据库操作加以控制的对象。在RDO的属性和方法中,包含了对单个的ODBC API函数以及一连串API函数的调用。

  ①rdoEngine对象

  最初调用RDO对象以及RDC(远程数据控件)时,自动生成rdoEngine对象的附带事件(incident)。rdoEngine用于对RDO全局属性的参数、选项进行设置,是在RDO的阶层结构内处于最上层的对象,包含了所有的其他对象。

  rdoEngine对象与DAO/Jet不同,虽然被多个应用程序共享,但体现rdoEngine对象的设定值的属性却并不共用,而是在各自的应用程序的程序界面中对其分别加以设定。这些设定值对其他使用RDO以及RDC的应用程序没有任何影响。rdoEngine不是集合的要素,而是重新定义的对象,rdoEngine对象不能被追加作成对象属性的初值。

  ②rdoEnvironment对象

  RDO对象在自动创建rdoEngine对象时,将rdoEnviroment对象的初始值生成并保存为rdoEnviroments(0)。一般情况下,应用程序中不必追加rdoEnvironment对象,大多只需对已有的rdoEnviroments(0)进行操作就可以了。只有在支持一个以上事务(Transaction),需要将用户名和口令信息分别处理的情况下,利用rdoCreateEnvironment方法将特定的用户名和口令值做成新的rdoEnvironment对象。在这个方法中可以指定固有名、用户名和口令,如果所指定的值与rdoEnvironments集合的已经存在的成员名称相同,会产生错误。新建的rdoEnvironment对象自动追加在rdoEnvironments集合的最后。调rdoCreateEnvironment方法时,其name参数可以是长度为0的文字列,这时新的rdoEnvironment对象将不会被追加在rdoEnvironments集合之中。

  ③rdoConnection对象

  rdoConnection对象用于同SQL Server的连接管理。

  下面是与SQL Server连接的例子。

  用OpenConnection方法的一个实例。

  设定的DSN为MyDSN:   

  Dim Cn As rdoConnection

  Dim En As rdoEnvironment

  Dim Conn As String

  Conn = "DSN = MyDSN; UID = Jacob;" & "PWD = 123456; DATA BASE = MyDb;"

  Set Cn= En.OpenConnection("", rdDriverPrompt, False, Co nn)

  Set Cn= En.OpenConnection(Prompt:= rdDriverPrompt, Rea dOnly:= False,Connect:= Cnn)

[1]  [2]  [3]  [4]