1. 读书笔记
Delphi与SQL数据库的连接
1) Client/Server模型
客户/服务器系统将处理任务分开在客户系统和数据库机器上进行处理, 客户PC上运行数据库应用程序, 数据库服务器运行全部或部分的实际DBMS, 增强了系统处理能力。
在Delphi C/S版环境中, 结合其优秀的数据库操作, 以及BDE( Borland Database Engine) 对开发客户机/服务器系统下的网络数据库软件提供更加了快速有效的途径。
因此, 在C/S系统中, 一般见Delphi处理用户界面及做大量复杂的计算。
服务器断采用安全高效的后台数据库系统SQL Server, 来处理前台所需的数据。
在网络连接方面, 选择高效的数据访问连接软件, 例如SQL Link, ODBC等, 加上TCP/IP 或 NAME PIPES等网络通信协议及运行效率良好的各种网络软硬件, 构成一个完整的C/S系统。
2) 基于ADO技术的数据库访问研究
ADO( Microsoft ActiveX Data Objects) 是微软通用数据访问的组成之一。
利用ADO提供的API, 开发人员能够访问任何数据类型, 支持关系和非关系型的数据库。
ADO集成了OLE DB和ODBC, 它能够直接经过OLE DB提供者获取数据或者间接的经过ODBC获取数据。
因为ADO没有在已经有的数据库结构上添加其它层次, 因此ADO层十分瘦, 执行起来十分高效。
ADO是建立COM( 组件对象模型) 基础之上的, 提供了自动服务的接口。
开发人员能够在
Delphi、 C++Bulider、 VisualC++以及其它支持COM的语言中实用它, 也同样能够在脚本语言中使用该方法。
以Delphi为利, 连接SQL Server数据库, 需要指定本机OLE DB提供的程序、 SQL Server的位置, 所使用的数据库以及安全性信息。
ADO连接组件的连接字符串应写为:
Provider=SQLOLEDB; //驱动程序
Data Source=MYServer; //服务器名称
Initial Catalog=MyDatabase;//数据库名称
User ID=MyUID; //用户名
Password=MyPassword; //密码
另外, 利用ADO能够很方便的连接远程数据库, 此时只要在Data Source中指定服务器的IP地址即可。
能够说, ADO技术极大的推动了数据库应用程序的开发和发展, 它使开发人员将更多的
精力放在数据库的设计和工程规划上, 而忽略底层技术问题, 提
高了软件开发效率。
2.设计要求
对小型自选商场的商品进货、销售、库存等环节进行管理3. 需求分析
3.1信息要求
本系统包含商场库存基本信息, 供应商基本信息, 进货单记录信息, 销售单记录信息以及操作员权限信息等。
3.2功能要求
本系统要求能对小型自选商场的商品进货、销售、库存等环节进行管理。
主要有:
1) 能记录每一笔进货, 查询商品的进货记录, 并能按月进行统计。
2) 能记录每一笔售货, 查询商品的销售情况, 并能进行日盘存、月盘存。
3) 在记录进货及售货的同时, 必须动态刷新库存。
4) 能查询某个厂商或供应商的信息。
5) 设计收银台程序, 能根据输入的商品编号、数量, 显示某
顾客所购商品的清单, 并显示收付款情况。
3.3可行性分析
系统数据库采用当前比较流行的Microsoft SQL Server, 开发本地数据库。
该数据库系统在安全行、准确性、运行速度方面有绝正确优势, 而且处理数据库量大, 效率高; 开发工具采用Delphi7。
Delphi7是当前应用最广泛的数据库系统开发工具, 能够快速开发Windows应用程序。
4. 数据库设计
4.1 数据库概念设计
图1、数据库概念
设计
具体的进货和销售属性, 请参考基本表的逻辑设计。
4.2数据逻辑设计
4.2.1 数据库概要说明
本系统数据库采用SQL Server 数据库, 数据库名称为jsc, 其概要说明如下
表1、数据库概要说明
4.2.2基本表
图2、 tb_storage( 库存表)
图3、 tb_import( 进货表)
图4、 tb_sale( 销售表)
图5、 tb_supplier( 供应商表)
图6、 tb_power( 用户权限表)
4.2.3触发器
某一商品的库存总量随着进货和销售而变化。
为了提高前台应用程序的运行效率, 在后台数据库设置了相应的触发器, 相关
代码如下:
1) 删除进货单的触发动作
create trigger [import_delete_storage] on dbo.tb_import for delete
as
update tb_storage set 库存数量=库存数量-deleted.数量
from deleted where tb_storage.商品编号=deleted.商品编号2) 添加进货单的触发动作
create trigger [import_insert_storage] on dbo.tb_import for insert
as
update tb_storage set 库存数量=库存数量+inserted.数量from inserted where tb_storage.商品编号=inserted.商品编号
3) 添加销售单的触发动作
create trigger [sale_insert_storage] on dbo.tb_sale。