怎样使用VB开发基于Sybase的C/S软件

发表于:2007-07-14来源:作者:点击数: 标签:
Sybase 数据库 是Sybase公司 开发 的大型数据库产品,一向以高 性能 和高 可靠性 而闻名于市场,在我国的应用已是十分广泛。另外,因为Sybase的存储过程可以按行返回记录,对于复杂的查询,可编写存储过程,因为存储过程是预编译了的(除非你要求调用时编译
  Sybase数据库是Sybase公司开发的大型数据库产品,一向以高性能和高可靠性而闻名于市场,在我国的应用已是十分广泛。另外,因为Sybase的存储过程可以按行返回记录,对于复杂的查询,可编写存储过程,因为存储过程是预编译了的(除非你要求调用时编译),所以返回结果非常快,而其它有的数据库存储过程是不能返回记录集的(如Oracle,除非采用Oracle提供的OLE Automation方法)

  在微软Windows大行其道的今天,友好直观的Windows界面成为用户需要,Sybase的PowerBuilder是提供给开发人员的一个方便快捷的开发工具,但从性能上讲它不是最优的,下面我谈谈怎样利用VB5.0和VB6.0在Sybase For NT数据库上进行开发,VB是MicroSoft公司提供的功能强大的开发工具,它在开发C/S数据库软件方面从综合开发周期和性能上来讲较之其它的开发工具有其优势。

  1、配置数据库服务器

  ①、在NT上安装Sybase数据库,直接运行Setup安装程序,在Windows NT Product Selection Screen对话框中,复选language Moudles,并点击Custom,在弹出对话框中US.English和Chinese一定要选取,这样可很好支持中文。

  ②、在接口文件配置中,可稍后配置。

  2、安装Win9x客户端或Win3x客户端

  和服务器安装类似,在Product Set Select 对话框中选取相应产品,即客户端是Win9x选取Windows 95 Products(32-bit versions),客户端是Win3x则选取Windows Products(16-bit versions)。在用SQLEDIT生成接口文件时,注意选取正确的网络协议

  3、安装ODBC驱动程序,微软没有为Sybase提供ODBC驱动程序,你可向经销商索取或到网上去“D”。

  4、以上工作完成后,下面分别就VB5.0和VB6.0同Sybase服务器的连接和操作作一简单介绍。

  在VB5.0中,访问远程数据库的较好方法是通过RDO(当然你也可以用DAO或直接使用ODBC)

  两种:DSN连接和无DSN连接,下示列程序均有说明

  此处打开的是master数据库,数据库服务器名为WIND,SQL Server 11,ODBC驱动程序是Sybase System 11,如用DSN连接,用控制面板ODBC驱动程序管理器,建立的DSN名是SybDSN



  新建工程,在工程菜单中引用Microsoft Remote Data Object 2.0

  Public enTest As rdoEnvironment     注释:声明rdo环境对象,为工程级全局变量

  Public cnTest As rdoConnection   注释:声明rdo连接对象,为工程级全局变量

    注释:最好不设为局部,否则即使断开连接,也将在数据库服务器端中保存连接的缓冲区,将会

    注释:占用服务器资源,甚至可能造成服务器的性能降低甚至死锁。



    注释:定义记录集变量

   Dim rsTest As rdoResultset



   注释:连接子程序

   Public Function connectSybase() As Boolean

     On Error GoTo ErrHandle

     Dim strConnect As String

     Set enTest = rdoEngine.rdoEnvironments(0)

     enTest.UserName = "sa" 注释:用户名

     enTest.Password = "password" 注释:口令

     注释:通过下句与ODBC数据源进行连接,不需用户选择数据源

     Set cnTest = enTest.OpenConnection(dsName:="SybDSN", _

     Prompt:=rdDriverCompleteRequired)

  注释:注意:如果你不想建立DSN,可采取无DSN连接方法如下:

  注释:将上句改为    Set cnTest = enTest.OpenConnection(dsName:="", _

     注释:   Prompt:=rdDriverNoPrompt, _

  注释:       Connect:="driver={Sybase System 11};" _

  注释:     & "srvr=WIND;database=master;")

     connectSybase = True

     Exit Function

  ErrHandle:

     connectSybase = False

  End Function



  Private Sub Form_Load()

   Dim strSQL As String

  if connectSybase then

  strSQL="Select * from sysusers" 注释:strSQL可以是SQL语句(块),存储过程

  Set rsTest = cnTest.OpenResultset(strSQL, rdOpenDynamic)

  else

  msgbox "打开数据库失败"

  Exit sub

  end if    

  Do Until rsTest.EOF

  Debug.print rstest.fields(0),rstest.field(1)

  rsTest.MoveNext

  Loop

  End Sub

  VB6.0的在数据库方面的新特性,使用ADO对象,和OLE DB。微软建议新的数据库工程采用ADO。此处先将ADO,OLE DB作一简介:

  ADO使得客户端应用程序能够通过任何OLE DB提供者来访问和操作数据库服务器中的数据。ADO最主要的优点是易于使用、速度快、内存支出少 和磁盘遗迹小。

  OLE DB是新的底层接口。它定义了一种通用的数据访问范例。也就是说,OLE DB并不局限于ISAM、Jet甚至关系数据源,但是它能够处理任何 类型的数据,而不考虑它们的格式和存储方法。由于接口比较复杂,不能在Visual Basic中直接访问OLE DB。ADO封装并且实现了OLE DB的所有功能。 VB 6.0对ADO有完整的支持,可以通过ADO、OLE DB的接口,调整OLE DB的灵活性。甚至可以在VB中创建自己的OLE DB提供程序。

  ADO的另一个功能是远程数据访问(RDS),能够通过一个往返传输将数据从服务器移动到客户端应用程序或Web页中,然后在客户端对数据进行操作,最后将更新数据返回服务器。RDS现在的版本是RDS 1.5。RDS已与ADO编程模块合并以简化客户端数据的远程调用。

  有关ADO的更详细信息,读者可查阅MSDN中的相关文档。

  VB6.0也可通过RDO和Sybase数据库进行连接,连接方法和VB5.0一样,但ADO较RDO有更大的优越性。

  VB6.0用ADO连接Sybase数据库采用OLE DB For ODBC Driver

  新建工程,在工程菜单中引用Microsoft ActiveX Data Object 2.0 Library



  Public cnTest As New ADODB.Connection     注释:声明ADO连接对象,为工程级全局变量

    注释:连接子程序

  Public Function connectSybase() As Boolean

   On Error GoTo ErrHandle

   Dim strConnect As String

   注释:通过下句与ODBC数据源进行连接,不需用户选择数据源

   strConnect = "Provider=MSDASQL.1;Persist Security Info=False;" _

       & " Extended Properties=注释:DSN=chs;SRVR=WIND;DB=master;UID=sa;PWD=注释:"

   cnTest.Open strConnect

       注释:注意:如果你不想建立DSN,可采取无DSN连接方法如下:

       注释:将上句改为 strConnect="Provider=MSDASQL.1;DRIVER={Sybase System 11}; " _

       注释:   & " Persist Security Info=False;DSN=;" _

   & " SRVR=WIND;DB=master;UID=sa;PWD=password"

   注释:Persist Security是否采用集成安全机制

   connectSybase = True

   Exit Function

  ErrHandle:

  connectSybase = False

  End Function

  Private Sub Form_Load()

   Dim rsTest As New ADODB.Recordset

   Dim strSQL As String

   If connectSybase Then

     strSQL = "Select * from sysusers" 注释:strSQL可以是SQL语句(块),存储过程

     rsTest.CursorLocation = adUseClient

     rsTest.Open strSQL, cnTest     注释:cnTest为打开的活动的连接

   Else

     MsgBox "打开数据库失败"

     Exit Sub

   End If

   Do Until rsTest.EOF

     Debug.Print rsTest.Fields(0), rsTest.Fields(1)

     rsTest.MoveNext

   Loop

  End Sub

  以上只谈了和Sybase数据库的连接及简单的查询,其它操作对程序员来讲和其它数据库的编写大致相同,读者可自行编写复杂的SQL语句对数据库进行增、删、改等操作。

原文转自:http://www.ltesting.net