VB 6.0 与 SQL Server 的两种连接

拈花ヽ惹草 提交于 2019-12-26 15:11:09

                                        

Visual Basic 6.0 与 SQL Server 的两种连接
 
 
摘 要:本文介绍了Visual Basic 6.0应用程序通过ADO连接Microsoft SQL Server的两种方法,即有源数据库连接和无源数据库连接,分别说明了两种连接方法的内部机制,并以实例比较两种方法的优缺点。
关键词: ADO;ODBC;DSN;数据库
 
VB通过ADO连接SQL Server数据库可以分为有源数据库连接和无源数据库连接,区别它们看是否使用了DSN(数据源名称)来决定。
1   无源数据库连接
其实,“无源数据库”连接也并不是说不需要数据源,如果没有数据源则连接是纸上谈兵,只是不需要配置ODBC数据源,利用ADO就可通过代码进行连接。
1.1 ADO(ActiveX Data Object)
在Visual Basic6.0中,数据访问接口有三种:ActiveX数据对象(ADO)、远程数据对象(RDO)和数据访问对象(DAO)。这三种接口的每一种都分别代表该技术的不同发展阶段,最新的是ADO,它比RDO和DAO更加简单,更加灵活。对于新工程,应使用ADO作为数据访问接口。
ADO 是Microsoft 数据库应用程序开发的接口,是建立在OLE DB之上的高层数据库访问技术。它封装了OLE DB所提供的接口,比起OLE DB提供者,ADO的接口可以使程序员在更高级别上进行数据交互。ADO技术不仅可以应用于关系数据库,也可以应用于非关系数据库。可以用统一的方法对不同的文件系统进行访问,大大简化了程序编制,增加了程序的可移植性。
1.2 建立无源数据库连接
在连接数据库前,首先要在Visual Basic 6.0菜单中“工程”—“引用”中选择Microsoft ActiveX Data Objects 2.6 Library 和Microsoft ActiveX Data Objects Recordset 2.6 Library这两个组件。
运用ADO对象模型的主要元素:Connection(连接)中的ConnectionString属性进行连接, ConnectionString为可读写string类型,指定一个连接字符串,告诉ADO 如何连接数据库。
实例:以建立登陆系统为例,介绍无源数据库连接。在Microsoft SQL Server 2000 中建立一个Student 的数据库,在Student数据库中建立login_user(name,password)的数据表,Microsoft SQL Server服务器的名为data_server。代码如下:
Option Explicit
Public LoginSucceeded As Boolean
'引用Microsoft ActiveX Data Objects 2.6 Library
'定义连接对象和记录集
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
'对取消按钮单击事件的响应
Private Sub cmdCancel_Click()
'设置全局变量为 false
'不提示失败的登录
LoginSucceeded = False
Me.Hide
End Sub
'对登录按钮单击事件的响应
Private Sub cmdOK_Click()
Set conn = New ADODB.Connection 
Set rs = New ADODB.Recordset
'建立无源数据库连接
conn.ConnectionString="driver={sql server};server=data_server;uid=sa;pwd=;Database=student"
conn.ConnectionTimeout = 50
conn.Open
Dim str As String
'连接连接对象
Set rs.ActiveConnection = conn
'设置游标类型
rs.CursorType = adOpenDynamic
If Trim(txtUserName.Text = "") Then
MsgBox "用户名不能为空,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUserName.SetFocus
Else
'设置查询字符串
str = "select * from login_user where name ='" & Trim(txtUserName.Text) & "'"
rs.Open str
If rs.EOF = True Then
MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUserName.SetFocus
Else
'登录成功,连接主窗口
If (Trim(txtPassword.Text) = Trim(rs.Fields("password"))) Then
LoginSucceeded = True
Me.Hide
main.Show
Else
MsgBox "密码不正确,请重输入密码!", , "警告"
txtPassword.SetFocus
SendKeys "{Home}+{End}"
End If
End If
End If
End Sub
无源数据库连接则不用配置ODBC环境,可以省去手工设置DSN的麻烦,这种方法所编写的软件适应性广,又符合专业软件的要求。
2  有源数据库的连接
有源数据库连接的首要任务是要注册数据源名称(DSN),通过配置ODBC环境,进行数据源的注册,然后才能在对数据库编程时,对数据源进行连接、访问和操作。
2.1 ODBC
ODBC(Open Database Connectivity,开放数据库互连)是Microsoft公司开发的一套开放数据库系统应用程序接口规范,利用它可以在应用程序中同时访问多个数据库系统。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。
2.2  DSN(数据源名称)
ODBC数据源分为以下三类:
(1)                用户DSN:只有创建数据源的用户才可以使用他们自己创建的数据源,而且只能在当前的计算机上使用。
(2)                系统DSN:任何使用你的计算机的用户和程序都可以使用的DSN。
(3)                文件DSN:除了具有系统DSN的功能之外,还能被其它用户在其它计算机上使用。
2.3  创建ODBC数据源的步骤
(1)         启动控制面板。
(2)         双击ODBC图标,启动ODBC数据源。
(3)         换到“用户DSN”标签,单击“添加”。选择SQLServer作为数据源的驱动程序。
(4)         为数据源命名,按提示操作即可创建ODBC数据源。
2.4  创建有源数据库连接
创建数据源是进行有源数据库连接的第一步,下面同样是运用ADO对象模型的主要元素Connection(连接)进行源数据库连接。
ConnectionString是Connection对象的属性名称,提供数据提供者或服务提供者打开到数据源的连接所需要的特定信息,包括Database、DSN、UID等。
(1)         Database:字符串表达式,指定服务器上的数据库名称。
(2)         UID:字符串表达式,为ODBC数据源指定用户标识(用户账号名)。
(3)         PWD:字符串表达式,为ODBC数据源指定用户口令。
(4)         DSN:字符串表达式,指定连接的ODBC 数据源名称。
利用已配置好的ODBC数据源进行连接。
实例:以建立查询系统为例,介绍有源数据库连接。创建ODBC数据源名称为stud,通过ADO与数据库student进行连接,代码如下:
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Private Sub Form_Load()
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.ConnectionString = "dsn=stud;uid=sa;pwd=;database=student"
conn.Open
Dim str As String
Set rs.ActiveConnection = conn
  rs.CursorType = adOpenDynamic
  str = "select * from login_user"
  rs.Open str
  txtUserName.Text = rs.Fields("name")
  txtPassword.Text = rs.Fields("password")
End Sub
有源数据库连接首先要配置ODBC环境,注册数据源,这种方法有一定的局限性,当程序最终完成并分发到用户手中后,还需要为用户配置ODBC,而且由于参数内容不一,配置时不宜把握。
结束语
ADO封装并且实现了Microsoft强大的数据访问接口OLE DB的所有功能,它具有通用性好,效率高的特点。通过ADO进行无源数据库连接,省去手工设置DSN的麻烦,使ADO对象模型获得更大的灵活性。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!