admin 管理员组文章数量: 1086019
2024年3月20日发(作者:matlab plot画直线)
维普资讯
第23卷第11期
甘肃科技
Gansu Science and Technology
V Z.23 N0.11
Nov.2007
2007年1i月
基于Del ph i 7.0和SQL Server2 000的追溯表软件开发
王妍妍,孙素静
(兰州大学信息科学与工程学院,甘肃兰州730000)
摘要:使用Delphi 7.0开发数据库应用程序的一个难点就是连接数据库。只要掌握了正确连接
数据库的方法,就能保证开发的质量。文章主要论述了使用Delphi 7.0和SQL Server 2000开发.
数据库应用程序时,使用Delphi 7.0访问机制ADO作为连接应用程序和数据库的桥梁,来完成软≯
件的开发。并且针对开发过程中遇到的两个问题,给出了解决方案。
关键词:BDE;ADO;0LE DB;远程数据服务;高层接口;
中图分类号:TP315
一
由Borland公司开发的Delphi是Windows环
OLE DB(数据库上的对象链接和嵌入)数据存取技
境下功能强大的、面向对象的完全可视化的应用程
序开发工具,尤其适合开发基于当前最流行的客户
机/IR务器数据库的应用软件,这主要表现在数据库
应用程序设计上的高可视化和高面向对象性。Del—
术,能屏蔽数据访问的复杂性,高效访问各种数据
库。OLE DB是一种普通和简化了的基于COM的
数据访问规则和API(应用程序编程接E1)函数的集
合,它被设计成对立于数据库的结构,驱动程序
phi 7.0版本在数据库应用程序设计方面实现了从
本地数据库到客户机/IR务器数据库的平滑升级,支
持多种数据结构——从客户机/N务器模式到多层
OLE DB Provider可以通过OLE DB与任何数据存
储建立链接,这样可是使用户更加方便的访问各种
类型的数据库。
概括地说,使用ADO具有如下好处:
(1)因为ADO直接使用API函数,所以易于使
数据结构模式,采用了高效的数据库管理系统,以及
更先进的数据库引擎。开发的数据库应用程序只有
和数据库建立连接,才能存取数据库中的数据,在本
追溯表开发实例中,使用Delphi 7.0的ADO和
SQL Server 2000数据库建立连接,并给出了开发
过程中遇到的两个问题的解决方法。
用、速度快、占用内存小和低磁盘空间支出,此外,
ADO适用范围广,升级和维护比较方便。
(2)支持基于Web应用开发。ADO的应用范
围涵盖了基于Web的数据驱动解决方案。
(3)支持远程数据服务RDS(Remote Data
Service)功能。即:通过RDS可以在一次往返过程
1 Delphi 7.0访问SQL Server 2000数据库
的基本原理
Delphi应用程序不能直接访问数据库中的数
据,但可以使用Delphi提供的数据引擎来对数据资
源进行访问,Delphi附带的数据引擎有BDE、ADO
(ActiveX Data Object,ActiveX数据对象)、dbEx—
press和平面文件访问机制,在本开发实例中,用的
是ADO访问机制来连接SQL Server 2000数据库。
ADO访问机制是Microsoft公司为了、解决通
中实现将数据从服务器移动到客户端或Web页上,
等到客户端或Web页上的数据做了修改以后,再将
更新结果回传到服务器上。
基于ADO的应用程序可以是单层或多层的,
比如。使用ADO访问本地数据库(Dbase、或.Fox—
Pro)的程序总是单层的,使用ADO访问SQL Serv—
er 2000数据库的程序总是两层的,这是因为SQL
Server 2000是一个远程数据库系统,数据库系统通
用企业数据库存取需求所推出的一套功能强大且易
于操作的数据库访问规范,是一种对多种数据格式
高层接El(hight—level interface)。ADO对数据库
的存取操作是通过OLE DB或ODBC驱动程序访
问数据库来实现的,ADO在COM(Component Ob—
ject Mode1)基础上。以ActiveX控件的形式封装了
常存放在一个远程专用的SQL服务器上。通过
ADO连接数据库有两种方法,第一种是使用
TADOConnection组件建立与数据库的连接,其他
数据集组件的Connection属性设置为ADOCon-
nection组件的名字,这样可以使多个组件共用一个
连接,从而便于对连接提供更多更强大的控制,设置
维普资讯
第11期 王妍妍等:基于Delphi7.0和SQL Server2000的追溯表软件开发 41
也方便简捷。第二种是直接使用ADO数据集组件
或TADOCommand组件连接到数据库。在本实例
中使用第一种方法来连接数据库。
在Delphi下,直接通过ADO组件可以访问包
括本地数据库和远程数据库在内的几乎所有的数据
库,工作流程如下:
I数据域感组件:TDBEdit、TDB,Grid、TDBMem。、TDBChan l
数据源组件:.Tl ̄ol/Tge
l ADO. ̄:TADOTable、TADOQue 、TADODataSeI、TADOStD『ePro ̄ l
1. .OLE DB( ̄J: 对蒙链接和嵌入) 。 l 应用程序
I ODBCAPI.I 毅据库
● ,
远程数据库:SQL Server、 本地数据库:Dbase、 其他数据格式:Emil、XML、
DB2、Oracle等 FoxPro、Access等 文本、声音、电影、图形等
2开发中遇到的问题及解决方法
本设计实例追溯表的主要功能是对企业的商品
及零配件的信息以及维护维修记录进行登记和管
理。追溯表的主要功能模块如下图所示:
按照需求,建立SQL数据库Ware,创建7张表
●
进行数据的设计和存储,分别是用户信息表(Use—
rlnfo)、商品信息表(WareData)、整机包含部件信息
表(Contain Fittings)、客户信息表(Buyerlnfo)、所购
物品表(BoughtGoods)、维修记录表(Vindi—
cateNote)、更换记录表(ChangeNote)。
本实例连接SQL Server 2000数据库的连接字
符串如下:
Provider=SQLOLEDB.1;
Password= +Trim(Edit2.Text)+ ;//登录
界面的“密码”框
Persist Security Info=True;
User ID= +Trim(Edit1.Text)+ ;//登录界
面的“用户名”框
Initial Catalog=Ware;
Data Source= +Trim(Edit3.Text)+ ;//登
录界面的“服务器名”框
Use Procedure for Prepare=1;
Auto Translate=True;
Packet Size=4096;
Use Encryption for Data=False;
Tag with column collation when possible:=
False;
2.1错误:未与信任SQL Server连接相关联
设置管理员和普通用户的用户名和密码,连接
好数据库以后,当尝试使用SQL Server登录连接
到SQL数据库Ware时,可能出现以下错误信息:
用户 user 登录失败。原因:未与信任SQL
Server连接相关联。
出现这个错误的原因是在安装Microsoft SQL
Server 2000时,未设置SQL Server登录认证模式
为混合认证模式,而SQL Server默认安装后是
Windows认证模式,因此用户无法使用SQL Server
的登录账户进行连接,从而导致出错。
解决方案:这并不需要重新安装SQL Server
2000,只需要在SQL Server 2000中的安全身份验
证模式更改为“SQL Server和Windows”即可。步
骤:打开SQL Server企业管理器;选择要更改认证
模式设置的服务器,右击该服务器,选择“编辑SQL
Server注册属性”,然后在对话框中选择“使用SQL
Server身份验证”;如果还不行,那在弹出菜单中选
择“属性”,SQL Server弹出属性对话框,在属性对
话框中选择“安全性”选项,在身份验证处选择“SQL
Server和Windows”,其他不变,然后单击“确定”;
当提示重新启动SQL Server服务时,单击“是”。
如果仍然无法连接SQL Server,这是在SQL
Server中有缺省的登录账户(如user),要恢复缺省
的账户,步骤:打开企业管理器,展开服务器组,展开
服务器;展开安全性,右击“登录”,然后单击“新建登
录”;在“名称”框中,输入user,在“身份验证”处选择
“SQL Server身份验证”;在“服务器角色”选项卡
中,选择“System Administrators”;在“服务器访问”
选项卡中选择此登录可以访问的数据库Ware;单击
“确定”。可以使用同样的方法添加其他的用户名登
录。
2.2登录远程SQL数据库
开发基于客户机/服务器数据库的应用软件时,
维普资讯
42 甘肃科技 第23卷
本地能连通服务器,但是在客户机连接远程服务器
时,却出现无法登录远程SQL数据库的连接错误。
法连通,则检查上面的各步。
(4)检查客户端设置:在客户端的MicrOs ̄t
SQL Server中的客户端网络实用工具里面,确保客
户端启用TCP/IP协议,以及默认端口是1433。
(5)在查询分析器做连接测试。在Microsoft
这是因为在连接本地服务器时,通常使用的是命名
管道协议,默认端口是445,这在SQL Server 2000
的服务器网络实用工具可以看到启动了这个协议。
而连接远程服务器使用完全不同的协议,远程连接
要使用TCP/IP协议,默认端口是1433,这也可以
在服务器网络实用工具启动的协议里面查看是否启
用。
sQL Server的查询分析器中,单击工具栏上的“文
件”中的“连接”,出现连接对话框,输人服务器名,并
选择SQL Server身份验证,点“确定”,就可以连通
了。通过企业管理器连接远程SQL Server的默认
要解决无法登录远程SQL数据库这样的连接
错误,可以按如下方案解决:
(1)确保服务器端启用了SQL Server 2000服
务和TCP/IP协议,并确保启用的TCP/IP协议属
超时设置是15秒,但是可以在工具菜单中的“选项”
卡中的“连接”处修改默认连接超时。
3 结束语
本文在开发c/s模式的追溯表软件的基础上
介绍了Delphi 7.0访问SQL Server 2000的基本原
性里面的默认端口是1433。要使防火墙对1433端
口开放,也可在测试时直接关掉防火墙。
(2)确保服务器端在1433端口侦听,检查的方
法是:在服务器端单击“开始”,单击“运行”,输人
“
理,并给出了开发过程中碰到的两个问题的解决方
案。本追溯表软件现在已投人使用,使用情况良好,
方便了公司管理商品及零配件维护、维修和跟踪。
参考文献:
cmd”单击“确定”,在出现的命令行输人“netstat—
,
an”
在出现的列表中有“tcp 127.0.0.1 1433 listen—
ing”这样的项,如果没有,则要给SQL Server 2000
打上sp3补丁。其实启动查询分析器,输人select
@@version,执行后就可以看到版本号,版本号在
[13 肖庆航,陆定淑等.Delphi 7数据库开发教程[M].北
京:清华大学出版社,2004
E23 张增强,刘成.Delphi 7数据库开发完全手册[M].北
京:清华大学出版社,2003
8.0.2039下的都需要打补丁。
(3)在服务器端做telnet测试,同样在上面的命
令行中输人“telnet ip 1433”,看能否连通。如果无
u●…・●…
[3]丁明海,武俊虎.基于C/S结构的配件寿命管理信息
系统EJ].甘肃科技,2006,22,3:62—63,101
-●…・●…-●…・●…-●…・●…・●…-●…・●…-●…・●…-●-・・・●…-●…・●…・●…・●…-●…・●…・●…-●…-●…・●…・●…-●…-●…・●…・●…-●…・●…・●…・●…・●…・●…・●…・●…-●…-●…-●…・●…●…・●…・●・・
(上接第74页)
一
个页面传递的各种数据类型的值、表单数据等。
页面数据代码如下:
Server.Transfer(“destinationWebForm.as-
7 结语
以上是作者通过实践总结出的五种Asp.net
页面参数传递的方法,对一般Asp.net使用者来说
px”,“false”)。
在目的页面中,使用Context.Handler来接收
数据,代码如下:
FormerPage formerPage一
Context.Handler;
使用Quer ̄String实现参数传递最简单最常用的方
(FormerPage)
法;然而根据需要选择合适的参数传送方法会使开
发出的动态网站更安全、更高效。也使得开发动态
网站更加容易。
参考文献:
然后用formerPage的属性和方法来获取前一
个页面的值,或者用Context.Items[“myParameter
”]直接获取前一个页面的值。需要注意的是获取这
些值必须在新的页面首次加载时,才能正确获取上
一
[1]龚赤兵.ASP.NET 2.0网站开发实例教程[M3.北京:
人民邮电出版社,2006.7
页面的各种数据类型或是控件的值;如果在以后
[23 马军.精通ASP.NET 2.0网络应用系统开发[M].北
京:人民邮电出版社,2006.6
[33 http://blog.cnbie.com/blog 52105.html
[43 http://sadier.cnblogs.tom/articles/48299.html
[53 http://digest.qq.tom/cgi—bin/wenji—content.?i'd=
51 75R1
的postbaek时,就无法获取上一页面的各种数据类
型或是控件的值了,因为此时得到的是当前页面的
实例;所以需要在新页面(destinationWebForm.as—
px)的Page—Load()事件中使用if(!IsPostBack)把
获取前一个页面的值的代码包含起来,才能获得前
版权声明:本文标题:基于Delphi7.0和SQL Server2000的追溯表软件开发 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1710888340a578096.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论