当前位置:首页 » 文件传输 » rdc访问超时
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

rdc访问超时

发布时间: 2022-09-19 00:49:50

1. Windows 怎么远程访问控制MAC系统

1整体简介:Mac电脑之间可以用过“屏幕共享”实现远程控制,如果要需要控制Windows电脑,并且与这台电脑未处于同一局域网中,那么只能使用相关工具了,RemoteDesktopConnection,简称RDC,由微软开发,支持通过Mac同时连接多台Windows电脑。要实现远程控制,需要在Windows电脑中作几项配置:设置密码、打开防火墙及允许远程控制。2所需工具/原料:Mac系统电脑、Windows系统电脑3方法/步骤:a设置密码大部分Windows用户并没有设置用户密码。系统默认管理员用户名是Administrator,要设置密码可打开控制面板-用户帐户,然后点击用户名,选择创建密码。填写密码后,点击“创建密码”。b打开防火墙Win7对安全的设置较高,只有当防火墙启用后才能进行远程控制。需要注意的是,防火墙并不能完全防止恶意的远程控制,所以一方面应该为电脑设置较为复杂的密码且定期更换,另一方面使用专业安全软件防止木马的侵袭。进入控制面板-系统和安全,点击Windows防火墙。点击“打开或关闭Windows防火墙”。在家庭与公用网络位置中均选中“启用Windows防火墙”。c启用远程控制选择系统属性-远程,选择“允许任意版本……”d获取Windows电脑IP地址点击屏幕左下角“开始”按钮,在搜索框中输入cmd,然后回车。输入ipconfig,然后回车。此时如下图所示的IPv4地址,就是Windows电脑的IP地址,记住这段字符。e在Mac端开始连接启动RDC,输入Windows的IP地址,点击“连接”。输入用户名及密码,点击确定。f完成操作4注意事项:Windows电脑必须与Mac处于同一局域网中,或者Windows电脑拥有固定IP地址。

2. RDC电脑远程控制怎么弄

就是远程桌面呗,局域网被访问的机子开放远程桌面及端口即可,直接通过ip可以访问。服务器也是如此。只是那种没有公网ip的,就不行了。

3. 在发布本机的ASP页面后,可以通过哪些方式进行访问

摘要 1、 IDC Internet Database ConnectorΨ绞姜

4. 什么是RDC,什么是POP大神们帮帮忙

一、RDC的概念 RDC即区域分发中心(Regional Distribution Center,简称RDC),它是近年来一种极为重要的物流运作模式。 区域分发中心是指物流公司具体进行业务运作的分发、配送中心,一般设有运输部、资讯部、仓务部和综合部。 二、RDC物流运作的特点 RDC物流运作模式具有如下特点: 1.高度集权 这种物流运作模式的权利集中在总部,业务开发、各种物流运作指令均来自于物流公司的总部。各地的RDC只是按总部的指令,从事具体的物流服务操作。 2.RDC物流运作模式的支撑系统 RDC物流运作有三大支撑系统,即仓储系统、运输系统和物流信息系统。 (1)仓储系统。建立先进的仓储管理系统,为生产企业服务,按照货物的堆放体积收费,参照国际管理,采用先进先出的管理方式进行管理。由于采用社会化、专业化的仓库管理办法,其费用要比各企业自己单独建仓库,无论从资金方面还是从利用率上均要节省,而且可是的自己的库存真正降为零,大大降低其仓储成本。此外在产品销售方面,各生产企业不仅可以利用RDC的分拨网络,把出厂的产品在最短的时间内送到消费者手中,加快产品的流通,是的产业资本的周转率明显提高,而且节省了大量的运输及广告费用。由于载运方面采用多家客户同车配送,同方向货物一起载运的合理运输方式,运输费用大幅度降低,车辆的实载率大幅度提高,整个社会经济效益增加。 所以,建立RDC的一个非常重要的目标就是实现仓储专业化、社会化管理,使得企业实现“零库存”。 (2)运输系统。作为RDC动脉系统的运输,对其要求要比传统运输高得多,物流中心要对货物装运后,到货物给收货人运输的全过程进行全程追踪。对于运输的时间、货损、货差、货物的品种都使用一套考核指标即KPI(Key performance Information)。 (3)物流信息系统(IT系统)。IT系统是物流中心联系各RDC的中枢,主要有以下技术:一是E-mail即电子邮件,这是目前最普遍的、非常便捷、成本较低的信息传递系统。目前各物流公司均采用此系统。二是EDI即电子数据交换,这是不同电脑之间按照统一的信息标准所进行的结构化数据交换。它可以简化贸易清算环节的手续,减少信息传递方面的差错,降低客户反复修改或磋商时的通信成本和制作成本,缩短公司的采购周期 关于POP 是英文Point Of Purchase的缩写,意为“卖点广告”其主要商业用途是刺激引导消费和活跃卖场气氛。她的形式有户外招牌,展板,橱窗海报,店内台牌,价目表,吊旗,甚至是立体卡通模型等等。常用的POP为短期的促销使用,其表现形式夸张幽默,色彩强烈,能有效地吸引顾客的视点唤起购买欲,她作为一种低价高效的广告方式已被广泛应用。>>>POP的制作形式:POP的制作形式有彩色打印,印刷,手绘等方式。随着电脑软件技术的发展,在美工设计应用上更尽显其美观高效的优势,甚至可将手绘艺术字形的涂鸦效果模仿的淋漓尽致,并可以接拨来自数码相机,扫描仪的LOGO图片等素材。特别适合对POP需求量较大的卖点快速高效低成本的制作。>>>POP的应用:POP主要应用于超市卖场及各类零售终端专卖店等,目前各大型超市卖场多采用印刷成统一模板后由美工根据要求填写文字内容,以满足玲琅满目的货品柜面不同的使用要求,机动性和时效性都很强.所以一般单纯的手绘POP是难以胜任的,必需以模块化方式批量制作.中小型零售店,产品专卖店目前有向品牌经营连锁经营的趋势发展,在产品组织结构促销计划,店面风格等不少和品牌经营者厂家同步运作,但在POP的使用上不少还是各自主张采用不同的文案,推出不同的折扣信息,有的店面甚至还有用黄纸毛笔书写"特大喜讯"之类的招贴....这显然不适应品牌运作的趋势,也许在这一点上品牌供应商应该考虑的更多。 [编辑本段]一、POP的定义 在国际贸易中POP的意思是:产品证明 Proof of Proct 也就是货物证明 POP(Point Of Purchase)本来是指商业销售中的一种店头促销工具,其型式不拘,但以摆设在店头的展示物为主,如吊牌、海报、小贴纸、大招牌、实物模型、旗帜等等,都是林立在POP的范围内。POP的中文名字又名“店头陈设”。 Post Office Protocol 的缩写 Post Office Protocol :邮局协议(邮局协议第3版) POP 协议允许工作站动态访问服务器上的邮件,目前已发展到第三版,称为 POP3。POP3 允许工作站检索邮件服务器上的邮件。POP3 传输的是数据消息,这些消息可以是指令,也可以是应答。 创建一个分布式电子邮件系统有多种不同的技术支持和途径:POP(邮局协议)、DMSP(分层式电子邮件系统协议)和 IMAP(因特网信息访问协议)。其中,POP 协议创建最早因此也最为人们了解;DMSP 具有较好的支持“无连接”操作的性能,但其很大程度上仅限于单个应用程序(PCMAIL);IMAP 提供了 POP 和 DMSP 的扩展集并提供对远程邮件访问的三种支持方式:离线、在线和无连接。 POP 协议支持“离线”邮件处理。其具体过程是:邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是 PC 机或 MAC。一旦邮件发送到 PC 机或 MAC 上,邮件服务器上的邮件将会被删除。 POP3 并不支持对服务器上邮件进行扩展操作,此过程由更高级的 IMAP4 完成。 POP3 使用 TCP 作为传输协议

5. 求救!!关于sql server远程ado连接的问题

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

摘 要:

本文讨论了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

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)

用EstablishConnection方法的一个实例。

这里以独立的rdoConnection对象为例说明与SQL Server的连接。

Public WithEvents Eng As rdoEngine

Public WithEvents Cn As rdoConnection

Private Sub Form_Load()

Set Eng = New rdoEngine

Set Cn = New rdoConnection

With Cn

.Connect = "UID = ; PWD = ;" & "DATABASE = pubs; DSN = biblio"

.LoginTimeout = 5

.EstablishConnection rdoDriverNoPromt, True, rdAsyncEna ble

End With

End Sub

在这个例子中,Form_Load函数对rdoEngine和rdoConnection对象进行初始化。这里有一点需要注意,rdoConnection对象是处于独立的状态之下,即使是处于未连接状态也可以设置属性的值。接下来是rdoConnect对象的事件处理程序。从RDO 2.0起可以实现异步方式(rdAsyn cEnable),EstablishConnection就设定为该值。在异步状态下,不必等待与数据库的连接,程序可以迅速从Form_Load 函数中退出。 然后是BeforeConnect事件,该处理在与数据库的连接开始以前被激发,此时不能进行有关终止连接的操作:

Private Sub Cn_BeforeConnect(ConnetString As String, Pro mpt As Variant)

MsgBox "正在连接" & ConnectString, vbOKOnly, "连接前"

End Sub

连接完成之后的事件处理:
Private Sub Cn_Connect(ByVal ErrorOccurred As Boolean)

Dim M As String

If ErrorOccurred Then

For Each er In rdoErrors

M = M & er & vbCrLf & M

Next

MsgBox "连接失败" & vbCrLf & M

Else

MsgBox "连接成功"

注释:这是确认连接状态的测试代码

Cn.Excute "use pubs"

End Sub

RDO连接处理结束后,在该事件中确认连接成功与否。连接成功的情况下ErrorOccurred返回False,失败时为True,由此可以对rdoErrors集合进行检测:

Private Sub Eng_InfoMessage()

For Each er In rdoErrors

Debug.Print er

Next

RdoErrors.Clear

End Sub

不能与SQL Server连接的原因多种多样,有可能是由于对数据库的访问权限、网络连接问题、数据库表的信息错误、SQL Server同时连接的许可数、资源不足等等,具体情况需要与网络管理员商量。 断开连接的操作非常简单,但又很重要,因为RDO不提供自动断开的功能。

Cn.Close

Set Cn = Nothing 注释:释放对象所占的内存资源

En.Close

Set En = Nothing 注释:释放对象所占的内存资源

VB是对象语言,Form、ActiveX控件也都是对象。使用对象后必须养成将对象设为Nothing把它从内存中释放的编程习惯。这样可以预防很多不可预测错误,往往程序中发生原因不明的错误时,其原因就在于此。

5、ADO 数据对象(Active Data Objects)

ADO是基于全新的OLE DB技术,OLE DB可对电子邮件、文本文件、复合文件、数据表等各种各样的数据通过统一的接口进行存取。随着ActiveX控件的升级(Windows 98的ActiveX 5.0),RDO将被以ActiveX技术为基础的ADO接口所替代。下面将介绍基于ActiveX技术的ADO访问SQL Server 6.5数据库的技术和方法。基于浏览器的ADO接口常用函数如下:

(1)取当前的工作数据库

由于管理任务一般都必须在Master库中完成,因此在执行管理任务之前,最好保存当前工作库,以便完成任务之后再切换回原来的任务。

Public Function SQLGetCurrentDatabaseName(Cn As ADODB.Connection) As String

Dim sSQL As String

Dim RS As New ADODB.Recordset

On Error GoTo errSQLGetCurrentDatabaseName

sSQL="select CurrentDB=DB_NAME ( )"

RS.Open sSQL, Cn

SQLGetCurrentDatabaseName=Trim $ (RS! CurrentDB)

RS.Close

Exit Function

errSQLGetCurrentDatabaseName:

SQLGetCurrentDatabaseName=" "

End Function

(2)取SQL Server安装目录下的DATA子目录路径

取SQL Server的设备文件缺省目录,返回如D:MSSQL DATA。

Public Function SQLGetDataPath(Cn As ADODB.Connection) As String

Dim sSQL As String

Dim RS As New ADODB.Recordset

Dim sFullPath As String

On Error GoTo errSQLGetDataPath

sSQL="select phyname from master..sysdevices where name=注释:master注释: "

RS.Open sSQL, Cn

sFullPath = RS! phyname

RS.Close

SQLGetDataPath=Left $ (sFullPath, Len(sFullPath) -10) 注释:MASTER.DAT的大小

Exit Function

errSQLGetDataPath:

SQLGetDataPath=" "

End Function

(3)创建一个新数据库

Public Function SQLCreateDatabase65 (Cn As ADODB.Connection,sDBName As String, sDataDeviceName As String, nDataSize As Integer, Optional sLogDeviceName, Optional nLogSize) As Boolean

Dim sSQL As String

On Error GoTo errSQLCreateDatabase65

Dim sDB As String

sDB =SQLGetCurrentDatabaseName(Cn)

sSQL = "USE master"

Cn.Execute sSQL

sSQL ="CREATE DATABASE" & sDBName

sSQL = sSQL &" ON " & sDataDeviceName & "=" & nDataSize

If Not IsMissing(sLogDeviceName) And Not IsMissing(nLogSize) Then

sSQL = sSQL & "LOG ON" & sLogDeviceName & "="& nLogSize

End If

Cn.Execute sSQL

sSQL = "USE" & sDB

Cn.Execute sSQL

SQLCreateDatabase65 = True

Exit Function

errSQLCreateDatabase65:

On Error Resume Next

sSQL = "USE " & sDB

Cn.Execute sSQL

SQLCreateDatabase65 = False

End Function

(4)判断一个数据库是否存在

Public Function SQLExistDatabase(Cn As ADODB.Connection, sDBName As String) As Boolean
Dim sSQL As String

Dim RS As New ADODB.Recordset

Dim bTmp As Boolean

on Error GoTo errSQLExistDatabase

sSQL = "select CntDB = count ( * ) "

sSQL = sSQL & "From master.dbo.sysdatabases"

sSQL = sSQL & "Where name = 注释: "& sDBName & " 注释: "

RS.Open sSQL, Cn

If RS! CntDB = 0 Then bTmp = False Else bTmp = True

RS.Close

SQLExistDatabase = bTmp

Exit Function

errSQLExistDatabase:

SQLExistDatabase = False

Exit Function

End Function

(5)删除一个数据库

Public Function SQLDropDatabase (Cn As ADODB.Connection, sDBName As String) As Boolean

Dim sSQL As String

On Error GoTo errSQLDropDatabase

If Not SQLExistDatabase(Cn, sDBName) Then

SQLDropDatabase = True

Exit Function

End If

Dim sDB As String

sDB = SQLGetCurrentDatabaseName(Cn)

sSQL = "Use master"

Cn.Execute sSQL

sSQL = "DROP DATABASE " & sDBName

Cn.Execute sSQL

sSQL = "USE " & sDB

Cn.Execute sSQL

SQLDropDatabase = True

Exit Function

errSQLDropDatabase:

On Error Resume Next

sSQL = "USE " & sDB

Cn.Execute sSQL

SQLDropDatabase = False

End Function

三、性能比较及应用说明

用VB开发基于SQL Server的数据库系统,以上几种访问SQL Server的方法各有各的特点。DAOs方法是基于对象的,因而便于使用,但是它是从Visual Basic到SQL Server最慢的连接方式。ODBC API和VBSQL方法从本质上讲是基于程序的。ODBC API方法通用性好,允许最强的互操作性,编程简单,但速度慢于VBSQL方法。VBSQL方法通过VBSQL控件,提供了重要的SQL Server前端应用程序所需的灵活性、强大功能和良好性能。它具有真正的事件驱动及错误处理能力,完全支持异步处理、游标和计算列等。这些都是VBSQL方法超出其它方法的优势,但其编程稍复杂。RDO是位于ODBC API之上的一个对象模型层,它依赖ODBC API、ODBC驱动程序以及后端数据库引擎来实现,用RDO所需的程序短小(约250 KB)、快速。RDO具备基本的ODBC处理方法,可直接执行大多数ODBC API函数,RDO包含在VB 4.0/VB 5.0企业版中,由MSRDO32.DLL动态连接库来实现。RDO是综合了DAO/Jet、VBSQL/DBLib和ODBC的优点的对象模型,包含ODBC API应用层,设计为在后台(服务器端)有数据库存在的前提下运行,是针对SQL Server和Oracle而特别设计的。RDO的优势在于它完全被集成在VB之中,可直接访问SQL Server存储过程、完全支持T-SQL、T-SQL调试集成在开发环境中、Visual Database Tools的集成化等。但微软已宣布今后不再对VBSQL/DBLib进行升级,而ODBC API函数一般的编程方式也不为人们所喜爱,RDO的应用将逐渐减少。至于实际使用哪一种接口方式,在很大程度上依赖于用户的应用程序的具体情况而定。

四、VisualBasic访问数据库的前景

近来随着Web应用软件的迅速发展和现有数据存储形式的多种多样,Visual Basic访问数据库的解决方案面临诸如快速提取分布于企业内部和外部有用商业信息等的多种挑战。为此Microsoft提出一种新的数据库访问策略,即“统一数据访问”(UniversalDataAccess)的策略。“统一数据访问”提供了高性能的存取包括关系型和非关系型在内的多种数据源,提供独立于开发工具和开发语言的简单的编程接口,这些技术使得企业集成多种数据源、选择更好的开发工具、应用软件、操作平台、建立容易维护的解决方案成为可能。

“统一数据访问”的基础是Microsoft的数据访问组件。这些组件包括ActiveXDataObjects(ADO)、RemoteDataService(RDS,也称“高级数据连接器或”ADC)、OLEDB和ODBC。
回答者

6. 如何在Windows 2003 上安装RDC 6.1 访问RemoteApp

以安装Windows Server 2003 Enterprise Edition(SP1)系统为例介绍安装方法:第1步,将Windows Server 2003安装光盘放入光驱启动电脑,当屏幕中出现Press any key to boot from CD……提示信息时,按任意键从光盘启动。安装程序开始装载必要的安装设置文件。进入安装程序欢迎页后,屏幕提示用户按Enter键开始安装系统,按F3键退出安装。按回车键键继续。
第2步,打开“Windows 授权协议”页面,按F8键同意协议并继续安装。
第3步,安装程序开始收集电脑上的安装信息,并要求用户选择安装Windows Server 2003的硬盘分区。默认选中硬盘中的第一个分区(即C盘),用户可以按方向键选中合适的分区,按回车键继续。
第4步,进入磁盘格式化页面,安装程序提示用户使用哪种文件格式来格式化分区。可供选择的有NTFS分区格式和FAT分区格式。鉴于NTFS文件系统可以拥有更高效的磁盘利用率和安全性能,因此选中“用NTFS文件系统格式化磁盘分区(快)”选项并按回车键。
第5步,安装程序开始格式化磁盘分区,格式化完毕后自动进入文件复制页面。安装程序开始将文件复制到Windows安装文件夹,复制过程所需时间较长。
第6步,文件复制完毕后,安装程序将在15秒钟后自动重新启动电脑。也可按回车键马上重启。
第7步,重新启动电脑,可以看到已经出现了Windows Server 2003的启动画面。
第8步,系统启动至Windows界面的安装屏幕,安装程序会进一步复制文件,并开始检测和安装硬件设备。在此过程中会出现屏幕抖动和黑屏,这属于正常现象。此过程所需时间比较漫长。
第9步,完成设备安装后打开“区域和语言设置”对话框,用户可以选择设置输入法等项目。一般保持默认设置,单击“下一步”按钮。
第10步,打开“自定义软件”对话框,按Ctrl+Shift组合键激活中文输入法。然后输入用户姓名和工作单位,并单击“下一步”按钮。
第11步,在打开的“您的产品密钥”对话框中,要求输入Windows Server 2003的合法产品密钥,只有正确输入的安装密钥后才能进行下一步操作。一般可以在产品授权书中找到密钥,输入密钥后单击“下一步”按钮。
第12步,打开“授权模式”对话框,安装程序要求用户指定希望使用的授权模式。对于单击用户而言保持默认设置即可,而如果局域网中存在多台Windows Server 2003服务器,则应该选中“每设备或每用户”单选框。本例保持“每服务器”单选框的选中状态,并单击“下一步”按钮。
第13步,在打开的“计算机名称和系统管理员密码”对话框中,需要设置计算机名称和系统管理员密码。需要注意的是计算机名称的长度不能超过64个字符,建议在15个字符以内,且该名称在网络具有惟一性。另外系统允许最多使用14个字符作为密码,且区分大小写。设置的密码应当妥善保存。设置完毕单击“下一步”按钮。
第14步,在打开的“日期和时间设置”对话框中,调整电脑系统的日期、时间以及时区。“时区”选项一般保持默认设置即可,单击“下一步”按钮。
第15步,安装程序开始安装网络组件和网络设备,以使该电脑可以上网。
第16步,打开“网络设置”对话框,一般用户只需选中“典型设置”单选框,然后在完成安装后作进一步的调整。当然如果需要也可以选中“自定义设置”单选框。单击“下一步”按钮。
第17步,在打开的“工作组或计算机域”对话框中,可以设置该电脑隶属于哪个工作组或域。这些设置只有在局域网环境才有效,一般用户只需保持默认设置,单击“下一步”按钮。
第18步,在后面的安装过程中,安装程序将安装“开始”菜单等系统组件,并对这些组件进行注册。安装设置工作将由安装程序自动完成,最后删除临时文件并重新启动电脑。
第19步,再次重新启动电脑,这时已经出现了Windows Server 2003的登录对话框。点按Ctrl+Alt+Del组合键。
第20步,系统默认输入了系统管理员的账户名称Administrator,用户需要在“密码”编辑框中输入事先设置的系统管理员密码,单击“确定”按钮。
第21步,登录Windows Server 2003系统桌面,自动打开“管理您的服务器”窗口。至此已经成功安装了Windows Server 2003系统。

7. Windows Server 2008 R2:为什么要使用网络级别身份验证

使用网络级身份验证 (NLA),而不较旧的终端服务方法,是更快、 更安全。Kristin Griffin从Windows Server 2003 终端服务移动到 Windows Server 2008 R2 远程桌面服务已成为一个相当普遍的升级路径。像人此升级,你经常会听到他们不知道为什么这两个版本之间的用户连接体验如此不同。连接到一台 2003年终端服务器时,用户在其凭据启动会话和类型。使用RD 会话主机服务器时,用户通常到客户端的对话框中输入凭据。默认情况下,客户端不支持调用网络级身份验证 (NLA) 技术无法连接。为什么差异?有为什么微软推出网络级身份验证,原因和理由,为什么它的确是一件好事。NLA 是什么?NLA 部队到目前用户凭据进行身份验证的客户端计算机之前,服务器将创建一个为该用户的会话。这一进程,因为它有时称为"前的身份验证"。服务器运行的 Windows Server 2008/Vista 或更高版本,并在客户端运行 Windows XP SP3 或以后,支持 NLA。NLA 依赖技术称为凭据安全支持提供程序 (CredSSP) 的协议,如果您使用另一个操作系统的远程桌面协议 (RDP) 客户端,因为你要问其开发人员,是否它支持 NLA。所以为什么提交凭据,然后会话创建这样的好事吗?有两个主要好处不创建会话之前你一定尝试连接该人有权这样做:它提供了一层防御拒绝服务 (DoS) 攻击,它加快了经纪的过程。启动会话 —— 甚至只显示登录屏幕 —— 需要服务器创建的许多支持会话,如 Csrss.exe 和 Winlogon.exe 所需的过程。为此,会话创建非常昂贵且相对耗时。如果大量的未经授权的用户尝试连接到一个会话在同一时间,他们可能能阻止其他人使用该服务器,因为它创建会话接受这些虚假的登录凭据。更关键的性能问题。在Windows Server 2003,相对较少的农场。Windows Server 2008 的开头,农场变得更为常见。记住每个会话主机 RD 场中的服务器可能是重定向器。如果主机服务器必须创建整个会话之前将连接请求重定向到该路连接经纪,这会减慢连接的时间。NLA 使用 CredSSP 来向服务器进行身份验证创建会话之前的用户凭据。这一进程可以避免这些问题。使用CredSSP 有其他好处。CredSSP 可以减少用户必须通过存储特定连接的凭据登录次数。第一次的用户连接到新的服务器、 虚拟机 (VM) 或甚至另一台 PC,他们需要提供其凭据。不过,他们也要保存他们的选项。如果他们这样做,他们不需要直到他们更改自己的密码再次提供这方面的凭据。如何支持 CredSSP NLACredSSP 协议帮助应用程序安全地将从客户端的用户凭据委托到目标服务器。本议定书首先确立了在客户端与目标服务器 (如指定的 [RFC2246]) 使用传输层安全性 (TLS) 加密的通道。当您连接到 RD 会话主机服务器 RDC 6.x 版或更高版本的客户端时,您可能已经注意你不直接连接路会话主机服务器登录屏幕,提供您的凭据。相反,一个地方的对话框弹出采取在客户端上的您的凭据。此对话框是 CredSSP 的前端。即使您没有选择将它们保存到此对话框中,键入您的凭据,当他们去 CredSSP。然后将凭据传递给 RD 会话主机服务器,通过安全通道。RD 会话主机服务器只将开始建设一旦接受了这些凭据的用户会话。客户端支持 CredSSP 和 RDP 6.x 和稍后将始终使用 NLA,如果可用的话。CredSSP (技术支持 NLA) 是操作系统的一部分,而不是的 RDP 的一部分,因为客户端操作系统必须支持 NLA 工作为 CredSSP。因此,虽然有 RDC 6.0 客户端可用的 Windows XP SP2,这不让使用 NLA 的 Windows XP SP2。运行Windows XP SP3 的客户端,Windows Vista 和 Windows 7 都支持 CredSSP。此外,RDC 会告诉你是否它支持 NLA 在关于屏幕。若要看到这种情况,单击左上角的 RDC 的电脑图标,选择关于。这将指示是否支持 NLA。Windows XP SP3 支持 CredSSP,但不一定在默认情况下启用它。若要启用它,微软发布了一篇知识库文章,与修复它我链接。本文还介绍如何手动启用 CredSSP。一旦启用了 CredSSP,重新启动计算机。如果您的客户端计算机不正确设置最多支持的 NLA 你会得到一条消息,所以当您尝试远程连接到计算机时,需要在 NLA 说。例如,如果您的 Windows XP SP3 客户端没有启用 CredSSP,会出现此错误,当您尝试远程连接到所需 NLA RD 会话主机服务器:"远程计算机需要网络级身份验证您的计算机不支持"。如何强制使用 NLA默认情况下,路会话主机服务器不需要 NLA。您可以配置他们允许仅从支持 NLA,通过组策略或从 RD 会话主机配置每个服务器基础上的计算机的连接。用于连接到每台服务器上的 RD 会话主机服务器要求 NLA,打开 RD 会话主机配置。(在连接部分中) 下双击 Rdp-tcp),然后在常规选项卡上选择允许连接只从计算机运行远程桌面网络级身份验证与旁边的复选框。这将阻止任何客户端不支持 NLA (即任何客户端运行在版本 6 之前的 RDC。x和任何操作系统不支持 CredSSP) 连接到服务器。要启用 NLA 通过组策略,启用以下策略,并将其应用到 OU RD 会话主机服务器:计算机配置 |政策 |管理模板 |Windows 组件 |远程桌面服务 |远程桌面会话主机 |安全 |通过使用网络级别的身份验证要求进行远程连接的用户身份验证。如果禁用或未配置此策略意味着 NLA 并不需要。VDI 请求对于虚拟桌面基础设施 (VDI) 部署,还可以限制 Windows Vista 和 Windows 7,接受只支持 NLA 客户端的连接请求。转到控制面板 |系统 |远程设置。从系统属性对话框中的远程选项卡,选择允许连接只从计算机运行远程桌面的网络级身份验证 (更安全) 的选项。这应解释为什么 RD 会话主机服务器上的启用 NLA 和 VDI 虚拟机是一个好主意。您应该了解如何在您的服务器和 VDI 虚拟机上要求 NLA 以及如何设置 NLA 支持的客户端计算机。证书,虽然只是简单地说,提到的是必不可少的任何 RDS 部署。这不只是为了 NLA,而且服务器身份验证,使用路网关路 Web 访问、 甚至路连接经纪人。下次我会深入到 RDS 部署证书要求的更多。Kristin Griffin远程桌面服务 MVP。她温和派微软论坛致力于帮助基于服务器的计算社区 (远程桌面服务) 和维护在 blog.kristinlgriffin.com RDS 博客。她是贡献者马克米纳西的"掌控 Windows Server 2008"(Sybex,2008年) 和"掌握 Windows Server 2008 R2"(Sybex,2010年)。她还与塔 · 安德森合着的"Microsoft Windows Server 2008 终端服务资源工具包"(微软出版社,2008年) 和"Microsoft Windows Server 2008 R2 远程桌面服务资源工具包"(微软出版社,2010年)。NLA 问答Q。我正在 Windows XP SP3。我启用了 CredSSP,但仍然出现以下错误时连接到需要 NLA RD 会话主机服务器:"已发生验证错误"。答: 有用于解决此问题的修复程序 我的博客。在此特定的情况下,这些因素的存在,也会发生此错误:与CredSSP 启用 Windows XP SP3 运行客户端。配置要使用一个真正的 SSL 证书来标识自己的服务器 (它不使用自动生成的证书,即在默认情况下的地方)。客户端不信任用于签署服务器上使用 SSL 证书的 CA 证书。由于NLA 要求安全通道,它接收凭据,和它无法创建此隧道,如果它不信任的证书,NLA 不起作用。要解决此问题,请确保 XP 客户端计算机有用于签署 RD 会话主机服务器的 SSL 证书安装在其计算机受信任的根证书颁发机构证书的证书存储区的文件夹。Novex此特定的错误会稍有变化从 RDC 6.x RDC 7.0。如果您安装 RDC 7.0,您可能会看到此错误消息:"连接已被终止因为从远程计算机收到意外的服务器身份验证证书。相关的内容如何扩展您的应用程序和数据的 to…到处 !桌面文件:了解 RDP虚拟化:使用路网关

8. SQL数据库局域网共享

可以用ODBC来解决。
ODBC(Open Database Connectivity,开放数据库互连)是微软公司开发的一套开放数据库系统应用程序接口规范,目前它已成为一种工业标准,它提供了统一的数据库应用程序编程接口(API)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。

SQL语言提供了两种不同的使用方式。一种是在终端交互式方式下使用,另一种是将SQL语言嵌入到某种高级语言如PL/1、COBOL、FORTRAN、C中使用,利用高级语言的过程性结构来弥补SQL语言在实现复杂应用方面的不足,这种方式下使用的SQL语言称为嵌入式SQL(Embedded SQL),而嵌入SQL的高级语言称为主语言或宿主语言。

对宿主型数据库语言SQL,DBMS可采用两种方法处理,一种是预编译,另一种是修改和扩充主语言使之能处理SQL语句。目前采用较多的是预编译的方法。即由DBMS的预处理程序对源程序进行扫描,识别出SQL语句,把它们转换成主语言调用语句,以使主语言编译程序能识别它,最后由主语言的编译程序将整个源程序编译成目标码。

三、 实验内容:

一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。

一个完整的ODBC由下列几个部件组成:应用程序、ODBC管理器、驱动程序管理器(Driver Manager)、ODBC API、ODBC 驱动程序、数据源。

下面我们在前面实验建立的数据库的基础上,配置相应的ODBC数据源。具体步骤如下:

1、通过程序—>设置—>控制面板—>管理工具—>点击数据源图标,出现ODBC数据源管理器对话框,点击系统DSN选项卡,添加系统数据源。

2、选择SQL SERVER的驱动

3、建立一个数据源名为ds,服务器:HP或(202.201.224.123)的数据源。

4、SQL SERVER登录验证方式采用输入登录ID和密码的SQL SERVER验证

登录ID和密码均为:你的登录名和密码

5、默认数据库指定为你所在班级的数据库名

6、如下图,这里使用默认选项,不做改动

7、出现如下图所示:点击测试数据源,验证是否成功。

8、测试结果会出现在下图所示的对话框中:

如测试成功,点击确定,名为ds的数据源就建立好了。

这里将结合配置好的数据源,给出一个用Visual Basic连接SQL SERVER2000的实例:即创建一个客户或前端数据库应用程序,并在窗体中添加 ADO Data 控件,以及其它所需要的任何 Visual Basic 控件。可以根据您的需要在窗体中放置多个 ADO Data 控件。

这里先介绍一下有关ADO Data 控件的内容:

ADO Data 控件使用 Microsoft ActiveX 数据对象(ADO) 来快速建立数据绑定的控件和数据提供者之间的连接。数据绑定控件是任何具有“数据源”属性的控件。数据提供者可以是任何符合 OLE DB 规范的数据源。使用Visual Basic 的类模块也可以很方便地创建子集的数据提供者。尽管可以在应用程序中直接使用 ActiveX 数据对象,但 ADO Data 控件有作为一个图形控件的优势(具有“向前”和“向后”按钮),以及一个易于使用的界面,使您可以用最少的代码创建数据库应用程序。在 Visual Basic 的“工具箱”中,不少控件都可以作为数据绑定的控件,包括复选框、组合框、图像、标签、列表框、图片框以及文本框控件等。此外,Visual Basic 还包括了若干种数据绑定的 ActiveX 控件,诸如DataGrid、DataCombo、Chart以及 DataList 控件等。用户也可以创建自己的数据绑定的 ActiveX 控件,或从其他开发商购买控件。

Visual Basic以前的版本提供了内在的 Data 控件和 Remote Data 控件(RDC) 来进行数据访问。这两种控件仍包括在 Visual Basic 中,以提供向后兼容。不过,因为 ADO 的适应性更广,因此建议用户使用 ADO Data 控件来创建新的数据库应用程序。

ADO DATA可能的用法

l 连接一个本地数据库或远程数据库。

l 打开一个指定的数据库表,或定义一个基于结构化查询语言 (SQL) 的查询、或存储过程、或该数据库中的表的视图的记录集合。

l 将数据字段的数值传递给数据绑定的控件,可以在这些控件中显示或更改这些数值。

l 添加新的记录,或根据对显示在绑定的控件中的数据的任何更改来更新一个数据库。

创建一个简单的前端数据库应用程序:

1、打开Visual Basic,创建一个标准工程(standard exe)。

2、在窗体上放置一个 ADO Data 控件 (该图标的工具提示为 "ADODC"),如果该控件不在“工具箱”中,请按 CTRL+T 键,显示“部件”对话框。在这个“部件”对话框中,单击“Microsoft ADO Data Control”,再单击“应用”。

2. 在“工具箱”中,单击选定“ADO Data控件”。就建立了一个名为Adodc1的ADO Data控件,然后按 F4 键显示“属性”窗口。

3. 在“属性”窗口中,单击“ConnectionString”,在它的有侧将显示 图标。

4. 在“属性”窗口中,将“RecordSource”属性设置为一个 SQL 语句。例如:SELECT * FROM Departemnt .

ADO Data控件属性设置:

属性
属性值

ConnectionString
DSN=ds

CommandType
8-adCmdUnknown

RecordSource
SELECT * FROM Department

5.在窗体上放置一个“标签”控件,显示说明内容。

6.在窗体上再放置一个“文本框”控件,用来显示数据库信息。

7. 在其“属性”窗口中,将 Text1 的“DataSource”属性设为 ADO Data 控件的名称 (ADODC1)。这样就将这个文本框和 ADO Data 控件绑定在一起。

8. 在其“属性”窗口中,单击“DataField”将下拉得到一个可用的字段列表。单击所要显示的字段的名称。

控件名
属性
属性值

Text1
DataSource
Adodc1

DataField
要显示的字段名

9. 对希望访问的其它每个字段重复第 5、6、7、8 步。

10.按 F5 键运行该应用程序。用户可以在 ADO Data 控件中使用四个箭头按钮,从而允许用户到达数据的开始、记录的末尾或在数据内从一个记录移动到另一个记录。

SQL语言与主语言具有不同数据处理方式。SQL语言是面向集合的,一条SQL语句原则上可以产生或处理多条记录。而主语言是面向记录的,一组主变量一次只能存放一条记录。所以仅使用主变量并不能完全满足SQL语句向应用程序输出数据的要求,为此嵌入式SQL引入了游标的概念,用游标来协调这两种不同的处理方式。游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。每个游标区都有一个名字。用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。

使用游标在需要一行一行处理时,游标十分有用。游标可以打开一个结果集合,并提供在结果集中一行一行处理的功能。下面的例子给出了一个利用游标来查询指定学号的学生所选修的课程成绩。

引自:http://www.nx5127.com/863.html

9. 请高手进来帮忙,关于SQL和网络通信链接失败的问题,追加50分。

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

摘 要:

本文讨论了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

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)

用EstablishConnection方法的一个实例。

这里以独立的rdoConnection对象为例说明与SQL Server的连接。

Public WithEvents Eng As rdoEngine

Public WithEvents Cn As rdoConnection

Private Sub Form_Load()

Set Eng = New rdoEngine

Set Cn = New rdoConnection

With Cn

.Connect = "UID = ; PWD = ;" & "DATABASE = pubs; DSN = biblio"

.LoginTimeout = 5

.EstablishConnection rdoDriverNoPromt, True, rdAsyncEna ble

End With

End Sub

在这个例子中,Form_Load函数对rdoEngine和rdoConnection对象进行初始化。这里有一点需要注意,rdoConnection对象是处于独立的状态之下,即使是处于未连接状态也可以设置属性的值。接下来是rdoConnect对象的事件处理程序。从RDO 2.0起可以实现异步方式(rdAsyn cEnable),EstablishConnection就设定为该值。在异步状态下,不必等待与数据库的连接,程序可以迅速从Form_Load 函数中退出。 然后是BeforeConnect事件,该处理在与数据库的连接开始以前被激发,此时不能进行有关终止连接的操作:

Private Sub Cn_BeforeConnect(ConnetString As String, Pro mpt As Variant)

MsgBox "正在连接" & ConnectString, vbOKOnly, "连接前"

End Sub

连接完成之后的事件处理:
Private Sub Cn_Connect(ByVal ErrorOccurred As Boolean)

Dim M As String

If ErrorOccurred Then

For Each er In rdoErrors

M = M & er & vbCrLf & M

Next

MsgBox "连接失败" & vbCrLf & M

Else

MsgBox "连接成功"

注释:这是确认连接状态的测试代码

Cn.Excute "use pubs"

End Sub

RDO连接处理结束后,在该事件中确认连接成功与否。连接成功的情况下ErrorOccurred返回False,失败时为True,由此可以对rdoErrors集合进行检测:

Private Sub Eng_InfoMessage()

For Each er In rdoErrors

Debug.Print er

Next

RdoErrors.Clear

End Sub

不能与SQL Server连接的原因多种多样,有可能是由于对数据库的访问权限、网络连接问题、数据库表的信息错误、SQL Server同时连接的许可数、资源不足等等,具体情况需要与网络管理员商量。 断开连接的操作非常简单,但又很重要,因为RDO不提供自动断开的功能。

Cn.Close

Set Cn = Nothing 注释:释放对象所占的内存资源

En.Close

Set En = Nothing 注释:释放对象所占的内存资源

VB是对象语言,Form、ActiveX控件也都是对象。使用对象后必须养成将对象设为Nothing把它从内存中释放的编程习惯。这样可以预防很多不可预测错误,往往程序中发生原因不明的错误时,其原因就在于此。

5、ADO 数据对象(Active Data Objects)

ADO是基于全新的OLE DB技术,OLE DB可对电子邮件、文本文件、复合文件、数据表等各种各样的数据通过统一的接口进行存取。随着ActiveX控件的升级(Windows 98的ActiveX 5.0),RDO将被以ActiveX技术为基础的ADO接口所替代。下面将介绍基于ActiveX技术的ADO访问SQL Server 6.5数据库的技术和方法。基于浏览器的ADO接口常用函数如下:

(1)取当前的工作数据库

由于管理任务一般都必须在Master库中完成,因此在执行管理任务之前,最好保存当前工作库,以便完成任务之后再切换回原来的任务。

Public Function SQLGetCurrentDatabaseName(Cn As ADODB.Connection) As String

Dim sSQL As String

Dim RS As New ADODB.Recordset

On Error GoTo errSQLGetCurrentDatabaseName

sSQL="select CurrentDB=DB_NAME ( )"

RS.Open sSQL, Cn

SQLGetCurrentDatabaseName=Trim $ (RS! CurrentDB)

RS.Close

Exit Function

errSQLGetCurrentDatabaseName:

SQLGetCurrentDatabaseName=" "

End Function

(2)取SQL Server安装目录下的DATA子目录路径

取SQL Server的设备文件缺省目录,返回如D:MSSQL DATA。

Public Function SQLGetDataPath(Cn As ADODB.Connection) As String

Dim sSQL As String

Dim RS As New ADODB.Recordset

Dim sFullPath As String

On Error GoTo errSQLGetDataPath

sSQL="select phyname from master..sysdevices where name=注释:master注释: "

RS.Open sSQL, Cn

sFullPath = RS! phyname

RS.Close

SQLGetDataPath=Left $ (sFullPath, Len(sFullPath) -10) 注释:MASTER.DAT的大小

Exit Function

errSQLGetDataPath:

SQLGetDataPath=" "

End Function

(3)创建一个新数据库

Public Function SQLCreateDatabase65 (Cn As ADODB.Connection,sDBName As String, sDataDeviceName As String, nDataSize As Integer, Optional sLogDeviceName, Optional nLogSize) As Boolean

Dim sSQL As String

On Error GoTo errSQLCreateDatabase65

Dim sDB As String

sDB =SQLGetCurrentDatabaseName(Cn)

sSQL = "USE master"

Cn.Execute sSQL

sSQL ="CREATE DATABASE" & sDBName

sSQL = sSQL &" ON " & sDataDeviceName & "=" & nDataSize

If Not IsMissing(sLogDeviceName) And Not IsMissing(nLogSize) Then

sSQL = sSQL & "LOG ON" & sLogDeviceName & "="& nLogSize

End If

Cn.Execute sSQL

sSQL = "USE" & sDB

Cn.Execute sSQL

SQLCreateDatabase65 = True

Exit Function

errSQLCreateDatabase65:

On Error Resume Next

sSQL = "USE " & sDB

Cn.Execute sSQL

SQLCreateDatabase65 = False

End Function

(4)判断一个数据库是否存在

Public Function SQLExistDatabase(Cn As ADODB.Connection, sDBName As String) As Boolean
Dim sSQL As String

Dim RS As New ADODB.Recordset

Dim bTmp As Boolean

on Error GoTo errSQLExistDatabase

sSQL = "select CntDB = count ( * ) "

sSQL = sSQL & "From master.dbo.sysdatabases"

sSQL = sSQL & "Where name = 注释: "& sDBName & " 注释: "

RS.Open sSQL, Cn

If RS! CntDB = 0 Then bTmp = False Else bTmp = True

RS.Close

SQLExistDatabase = bTmp

Exit Function

errSQLExistDatabase:

SQLExistDatabase = False

Exit Function

End Function

(5)删除一个数据库

Public Function SQLDropDatabase (Cn As ADODB.Connection, sDBName As String) As Boolean

Dim sSQL As String

On Error GoTo errSQLDropDatabase

If Not SQLExistDatabase(Cn, sDBName) Then

SQLDropDatabase = True

Exit Function

End If

Dim sDB As String

sDB = SQLGetCurrentDatabaseName(Cn)

sSQL = "Use master"

Cn.Execute sSQL

sSQL = "DROP DATABASE " & sDBName

Cn.Execute sSQL

sSQL = "USE " & sDB

Cn.Execute sSQL

SQLDropDatabase = True

Exit Function

errSQLDropDatabase:

On Error Resume Next

sSQL = "USE " & sDB

Cn.Execute sSQL

SQLDropDatabase = False

End Function

三、性能比较及应用说明

用VB开发基于SQL Server的数据库系统,以上几种访问SQL Server的方法各有各的特点。DAOs方法是基于对象的,因而便于使用,但是它是从Visual Basic到SQL Server最慢的连接方式。ODBC API和VBSQL方法从本质上讲是基于程序的。ODBC API方法通用性好,允许最强的互操作性,编程简单,但速度慢于VBSQL方法。VBSQL方法通过VBSQL控件,提供了重要的SQL Server前端应用程序所需的灵活性、强大功能和良好性能。它具有真正的事件驱动及错误处理能力,完全支持异步处理、游标和计算列等。这些都是VBSQL方法超出其它方法的优势,但其编程稍复杂。RDO是位于ODBC API之上的一个对象模型层,它依赖ODBC API、ODBC驱动程序以及后端数据库引擎来实现,用RDO所需的程序短小(约250 KB)、快速。RDO具备基本的ODBC处理方法,可直接执行大多数ODBC API函数,RDO包含在VB 4.0/VB 5.0企业版中,由MSRDO32.DLL动态连接库来实现。RDO是综合了DAO/Jet、VBSQL/DBLib和ODBC的优点的对象模型,包含ODBC API应用层,设计为在后台(服务器端)有数据库存在的前提下运行,是针对SQL Server和Oracle而特别设计的。RDO的优势在于它完全被集成在VB之中,可直接访问SQL Server存储过程、完全支持T-SQL、T-SQL调试集成在开发环境中、Visual Database Tools的集成化等。但微软已宣布今后不再对VBSQL/DBLib进行升级,而ODBC API函数一般的编程方式也不为人们所喜爱,RDO的应用将逐渐减少。至于实际使用哪一种接口方式,在很大程度上依赖于用户的应用程序的具体情况而定。

四、VisualBasic访问数据库的前景

近来随着Web应用软件的迅速发展和现有数据存储形式的多种多样,Visual Basic访问数据库的解决方案面临诸如快速提取分布于企业内部和外部有用商业信息等的多种挑战。为此Microsoft提出一种新的数据库访问策略,即“统一数据访问”(UniversalDataAccess)的策略。“统一数据访问”提供了高性能的存取包括关系型和非关系型在内的多种数据源,提供独立于开发工具和开发语言的简单的编程接口,这些技术使得企业集成多种数据源、选择更好的开发工具、应用软件、操作平台、建立容易维护的解决方案成为可能。

“统一数据访问”的基础是Microsoft的数据访问组件。这些组件包括ActiveXDataObjects(ADO)、RemoteDataService(RDS,也称“高级数据连接器或”ADC)、OLEDB和ODBC。