VFP与SQL Server的连接(2007-03-13 00:59:43)
VFP与SQL Server的连接(1)
摘要:本文主要讲解VFP到SQL Server的连接以及连接中应该注意的问题和错误的解决方法 这里所指的连接关系(connection)指的是当VFP通过界面卡、SQL Server 的网络架构、 传输媒介、通讯协议等复杂的作业组合后而连线到SQL Server的流程总称。 安全措施 相信大家都了解数据的机密性和重要性,所以您最好采取一些安全防护措施来保护它不被非法存取和蓄意破坏。事前做好万全的准备总比事后的懊悔好。 至于设定和维护资料的安全性是系统管理员(Administrator)的职责。 假如您的应用程序是C/S结构,那么程序的使用者都必须先通过身份验证以获得存取资料的权限,亦即使用者可利用在SQL中设定的使用者名称和密码,或直接用Windows NT 目录资料库中的使用者名称和密码来存取SQL资料库。(这种做法请与SQL系统管理员联系)。 输入用户名称和密码的一般做法 假如您的程序需要输入用户名称和密码的话,一般的做法是在屏幕上显示一个对话框让用户输入。在VFP中有一个TEXTBox 控件非常适合来担任这个工作,它有一个passchar属性,可以让开发者设计要以什么字符来遮没(通常是*,关于加密的程序以及算法可以参考VFP编程技巧)用户输入的密码。 建立ODBC数据源(DSN) ODBC数据源(Data Source Name : DSN)即是ODBC驱动程序的唯一识别名称,DSN可以包含空白的字符,如 “FAVOR CAI” 由控制面板的32BIt Odbc 图标,可以进入ODBC数据管理器,如果没有 32BIt Odbc 图标,请先安装ODBC驱动程序。 用户DSN是用户用来存贮与数据库的连接信息,用户数据源只对用户可见而且只能用于当前机器上。 系统DSN是用来存贮与数据库的连接信息,当前计算机上的所有用户都可以使用系统数据源。 文件DSN是用来存贮与数据库的连接信息,可以由安装了相同驱动程序的用户共享。 跟踪允许创建调用ODBC驱动程序的日志,以供技术人员查看或辅助调试应用程序。 双击[添加(D)]按钮,可以自行添加ODBC DSN,在弹出的“选择新数据源”对话框中,选择SQL Server 驱动程序。 接下来,让我们来看看DSN的相关设定,在ODBC SQL Server 设定对话框提供了下列的设定选项: 1、Date Source Name(DSN):每一个ODBC驱动程序都有一个唯一的识别名称。 2、Description(说明):此说明资料来源,可省略不输入。 3、Server (服务器): 即SQL Server 所在的服务器名称,若SQL Server 在本机上执行的话,便可使用[Local ]预设值。 4、 Network Address:(网络地址):指SQL Server 资料库管理系统(DBMS)的地址,SQL Server 驱动程序再从DBMS 取回要存取的资料。假如您用的是MicroSoft SQL Server 的话,只要让这个栏位保留预设值(Default)即可,当你是透过TCP/IP建立的连接关系时才需设定它。 5、Network Library :指与网络程序沟通的SQL Server 驱动程序的Network library DLL名称 6、Option按钮:按一下,以设定Login 与Translation 的设定。 (1):Database Name :要存取SQL资料库的名称。 (2): Language Name:SQL Server 所指定的国家语言,除非你想让SQL Server以法文或德文来传递信息,不然只需让它保留预设值(Default)即可。 (3): Generate Stored Procedure for prepared Statements:这个选项被核取的话,SQL Server 将预备叙述PS(Prepared Statements)插入在程序中再加以编译为预存程序SP(Stored Procedure)。若清除这个检查框的核取,则PS将与SQL Server 驱动程序运作时执行与贮存。 (4): Translation:按下[Select]按钮后,选择翻译程序。 (5):Convert OEM To ANSI characters: 若SQL Server 和SQL Server 驱动程序都不使用ANSI字符的话,请核取这个检查框。 VFP与SQL Server的连接(2) 怎样取得服务器名称和ODBC数据源 通常程序不会询问用户所要使用的是那一个SQL Server 或是那一个数据源,但假如你必须这么做的话,您可以在屏幕上显示一个目前已在网络上启动或可被搜寻得到的SQL Server 或DSN 选择清单(最好把用户的使用权限也一起列举),也不要让用户自行在TextBox上输入,避免使用上的困扰。 技巧:可以用SQL Server 上的函数SqlServerEnum来搜寻网络上已经安装的SQL 服务器。 ODBC登录对话框照理来说,一般应用程序被执行时应该看不到ODBC 的登入对话框,但如果没有作好适当的设定时,那么一旦ODBC驱动程序管理员接收到应用程序存取ODBC失败的信息时,屏幕上便会出现ODBC登录对话框。也许您会感觉这个对话框跟您见到的对话框不同,这个对话框之所以出现,是因为用户没有通过DSN的身份验证造成。假如您指定了一个确实可供存取的DSN的话,将出现另一种登录对话框。这是正确指定DSN才出现的对话框,唯一美中不足的是无法禁止用户按下[OPTION>>]按钮,进而更改其登录的高级设定。 测试数据源 为了避免在调试程序时,带来不必要的麻烦,应该在建立好DSN后,对DSN进行测试。在VFP中你可以用 SqlConnect( )或者SQLSTRINGCONNECT( )函数来对DSN进行测试。 下面说说详细的测试方法 测试方法:? SqlConnect(数据源,用户,密码) 例如: ? SqlConnect("EDSTW","sa","") 如果函数返回-1,表明数据源无法连接,请检查数据源或者检查SQL服务器是否正常。返回正数,表明数据源连接成功。该返回数代表当前连接的SQL句柄。 连接管理 网络上的数据库若被单一用户独占的话,就豪无意义可言,SQL Server的资料库界面改善了前端的应用程序来存取数据库的效率,让多个CLIENT可同时透过同一连接关系去存取数据。 动态连接模式 以往若应用程序需多次存取某一数据库的话,便会与该数据库一直保持连接关系,如此因长期独占而导致该连接关系处于空闲状态,浪费资源。 现在VFP加入连接共享以及空闲关闭的功能。 及时开启连接关系:连接不活动前允许在指定的时间分钟数内空闲。如果在指定时间内没有请求使用服务器,则 Visual FoxPro 终止该连接。但是,连接超时后如果对服务器又有请求,则 Visual FoxPro 将试图自动恢复这个连接。因为连接是作为数据库的一部分存储的,所以仅在有打开的数据库时才能进行连接建立。 1:指定的数据源:有两种方式指定数据源,一种用字符串来指定,允许在文本框中键入连接串。另一种用DSN,用户标识,密码来指定: A:数据源 允许从已安装的 ODBC 数据源列表中选择一个数据源。 B:用户标识 如果数据源需要用户名称或标识,允许键入。 C:密码 如果数据源需要密码,允许键入密码。 D:数据库您可以选择一个数据库,作为所选数据源连接的目标。 指定DSN后您可以对刚输入了内容的连接进行连接验证。如果连接成功,则显示对话框提示此“连接成功”;如果连接失败,则出现错误信息。如果没有对连接指定内容,则显示“选择数据库” 对话框,使您可以选择数据源。 新的数据源 显示“Data Sources”对话框,使您可以添加、删除或配置数据源。 2:显示 ODBC 注册提示 此项设定ODBC登录信息对话框是否出现,什么时候出现。 A:仅当登录信息没有指定时:如果在命名连接定义中未存储用户标识和密码,则 Visual FoxPro 用“ODBC 数据源注册”对话框提示用户。 B: 每次都显示: 指定 Visual FoxPro 总是使用“ODBC 数据源注册”对话框提示用户,该框允许用户使用与存储在命名连接中不同的注册 ID 和密码。 C:从不指定: Visual FoxPro 从不提示用户。此选项确保更高的安全性。 3:数据处理 这里可以设置连接数据的处理方式 A:异步执行 指定异步连接。 B:显示警告信息 指定显示不可捕获警告。 C:批处理 指定以批处理方式进行连接操作。 (1):批处理方式 ---- 分批从表中取出设定的记录数(默认值100) (2):非批处理方式---- 一次取完整个表的数据 D:自动事务处理指定自动执行事务处理。 E: 数据包大小当和远程数据位置之间传送信息时,您可以指定传送信息网络包的大小(以字节为单位)。在下拉列表中选择或键入一个值。 4:超时时间间隔 这些选项设置连接属性的值,也可用 DBSETPROP( ) 函数设置。 A:连接(秒) 以秒为单位指定连接超时时间间隔。 B:查询(秒) 以秒为单位指定查询超时时间间隔。 C:空闲时间(分钟)以分钟为单位指定空闲超时时间间隔。在指定的时间间隔后,活动连接变为不活动。 D:等待时间(豪秒) 以毫秒为单位指定在 Visual FoxPro 确定 SQL 语句是否执行完毕之前经过的时间。 设定完毕后按下CTRL+W 键存盘。 VFP与SQL Server的连接(3) ----监视SQL Server 上的连接情况 在SQL Enterprise manager中的[Server /Current Activity]可以让您一目了然地看出SQL的连接情况, |
|