DELPHI基础教程:Delphi客户服务器应用开发(四)[2]

DELPHI基础教程:Delphi客户服务器应用开发(四)[2],第1张

CREATE TABLE EMPLOYEE (EMP_NO EMPNO NOT NULL

FIRST_NAME FIRSTNAME NOT NULL

LAST_NAME LASTNAME NOT NULL

PHONE_EXT VARCHAR( )

HIRE_DATE DATE DEFAULT NOW NOT NULL

DEPT_NO DEPTNO NOT NULL

JOB_CODE JOBCODE NOT NULL

JOB_GRADE JOBGRADE NOT NULL

JOB_COUNTRY COUNTRYNAME NOT NULL

SALARY SALARY NOT NULL

FULL_NAME PUTED BY (last_name || || first_name)

PRIMARY KEY (EMP_NO))

CHECK语句是给数据库字段取值范围加约束条件 PRIMARY_KEY语句是给表建立关键字索引

如法炮制 就可以定义IBLOCAL中的所有表

IBLOCAL中的表包括

EMPLOYEE CUSTOMER DEPARTMENT EMPLOYEE_PROJECT

PROJECT SALES SALARY_HISCORY

各数据库表中的内容如下

表 EmployeeDemoDB中各数据库表的内容

━━━━━━━━━━━━━━━━━━━━━━━━━━━

数据库表名        表中内容

───────────────────────────

EMPLOYEE 雇员信息

CUSTOMER 客户信息

DEPARTMENT 部门信息

EMPLOYEE_PROJECT 雇员负责的工程

PROJECT 工程信息

SALES 销售信息

SALARY_HISTORY 雇员薪水调整的历史信息

━━━━━━━━━━━━━━━━━━━━━━━━━━━

每个数据库表中都定义了关键字段 关于数据库表中的字段名 类型 大小 这里不再赘述

应用程序分析

TDatabase部件的使用

CSDEMO程序中定义了一个数据库模块部件 TDmEmployee 它是继承于TDataModule TDataModule是在Delphi 中才出现的专门放置数据访问部件(如TDatabase TTable和TQuery等)的框架 其它涉及数据库访问的窗体 只要在uses语句中插入数据库模块所在的库单元 该窗体上的数据库部件就可引用相应的数据库访问部件

在TDmEmployee中定义了一个TDatabase类型的部件──EmployeeDatabase EmployeeDatagase的主要属性及属性值如下

表 EmployeeDatabase部件主要属性的取值

━━━━━━━━━━━━━━━━━━━━━━━

属性        属性值

───────────────────────

AliasName IBLOCAL

DatabaseName EmployeeDemoDB

KeepConnection True

LoginPrompt False

TransIsolation tiReadCommitted

Params USERNAME = SYSDBA

PASSWORD = masterkey

Connected True

━━━━━━━━━━━━━━━━━━━━━━━

AliasName属性所指定的IBLOCAL 必须已经在BDE中配置好 DatabaseName属性指定要使用的数据库名 该数据库名是由应用程序自己定义的 因此不反应到BDE中 该属性值被TTable TQuery等DataSet部件引用 并且出现在DataSet部件的DatabaseName 下拉式列表框中 本例中的 EmployeeDemoDB 被EmployeeTable SalesTable等所有DataSet部件引用

Connected为True表明 应用程序与数据库将保持联接

KeepConnection属性为True 表明多次打开和关闭EmployeeDemoDB数据库中的任意表 应用程序将始终与数据库保持联接 这省却了重复注册的开销

LoginPrompt 属性为False 表明应用程序自动处理与数据库的联接注册 因此 Params属性中定义了注册的用户名和口令

USERNAME = SYSDBA

PASSWORD = masterkey

TransIsolation属性为tiReadCommitted表明 如果存在多个同时事务 则某一事务只允许读由其它事务提交了的数据

程序中EmployeeDatabase的应用还与事务控制等有关 下文中会介绍这方面的内容

不同数据库表的切换

在许多数据库应用中都要在不同数据库表之间相互切换 以响应用户输入条件或系统状态的变化 这时 往往需要特别的处理 例如改变光标形状或隐藏数据改变等 尤其是在客户/服务器应用程序中 因为是用SQL语句访问远程数据库 有时还要在服务器端执行计算任务 所以客户端的数据变化会有一定的间隔 因此应该让用户明白发生了什么 下面是CSDEMO在数据库表切换时的处理办法

procedure TFrmViewDemo ShowTable( ATable: string )

begin

Screen Cursor := crHourglass; { 向用户提示当前 *** 作状态 }

VaryingTable DisableControls; { 隐藏数据变化 }

VaryingTable Active := FALSE; { 关闭原来的数据库表 }

VaryingTable TableName := ATable; { 更新数据库表名 }

VaryingTable Open; { 打开数据库表 }

VaryingTable EnableControls; { 显示所作的修改 }

Screen Cursor := crDefault; { 重新设置光标形状 }

end;

crHourglass型光标表明正在执行SQL查询 DisableControls和EnableControls的作用是隐藏和显示数据变化

InterBase触发器(Trigger)的应用

在CSDEMO应用程序中 演示触发器应用的窗体是TFromTriggerDemo;

在该窗体中包含两个TDBGrid对象 DBGrid 显示EmployeeTable中的数据 DBGrid 显示SalaryHistoryTable中的数据 它们的主要属性及属性值如下

表 EmlpoyeeTable部件主要属性的取值

━━━━━━━━━━━━━━━━━━━━━

属 性       属 性 值

─────────────────────

DatabaseName EmployeeDemoDB

IndexFieldName Emp_No

TableName EMPLOYEE

━━━━━━━━━━━━━━━━━━━━━

表 SalaryHistoryTable部件主要属性的取值

━━━━━━━━━━━━━━━━━━━━━

属 性       属 性 表

─────────────────────

DatabaseName EmployeeDemoDB

IndexFieldName Emp_No

MasterFields Emp_No

MasterSource EmployeeSource

TableName SALARY_HISTORY

━━━━━━━━━━━━━━━━━━━━━

这两个表之间存在两种关系

● 连接关系

EmployeeTable的记录变化时 SalaryHistoryTable的数据要作相应的变化 这种连接关系是通过索引来实现的

● 数据一致性

对EmployeeTable中的Salary字段的值作修改必须反映到SalaryHistoryTable中 SalaryHistoryTable维护的是Salary变化的历史信息 这种数据一致性要求在本程序中是通过触发器实现的

触发器是在SQL服务器端执行的一段程序 它在服务器端被触发执行完成一定的数据计算任务

下面是InterBase服务器上与Employee表相关的触发器程序

Triggers on Table EMPLOYEE:

SAVE_SALARY_CHANGE Sequence: Type: AFTER UPDATE Active AS

BEGIN

IF (old salary <> new salary) THEN

INSERT INTO salary_history

(emp_no change_date updater_id old_salary percent_change)

VALUES (

old emp_no

now

user

old salary

(new salary old salary) / old salary)

END

因为触发器是相应于EMPLOYEE表上的数据修改由服务器自动触发执行的 所以在客户应用程序上没有显式的调用 在客户端有打开并显示数据库表内容的程序和当SALARY_HISTORY表中数据变化时的更新显示的 *** 作

lishixinzhi/Article/program/Delphi/201311/25126

我们是速达软件西安3A代理您这个问题应该请当时卖给您软件的公司去给你做上门的技术服务不知道您有没有购买一年的服务呵呵其实挺简单的,, 3000v66以下的是用interbase56 3000v66--3000v71是用interbase65 3000v71以上的才是用sql server后台服务器 方法有三,从简单到难如下 一:先在控制面板里面,把interbase删除,记得删除后重启电脑,再装一次interbase,再重启电脑,试试 二:把速达软件卸载,然后在系统盘的c:\program files\里面把 interbase、borland、mssql相关的文件夹全删了,然后重启,按顺序装服务器、然后装速达 三:还不行的话,重装系统再试。 具我推测你的软件应该是老版的,所以你不要装SQL了,装INTERBASE就可以了
希望采纳

处理问题描述:1、 把光盘放入光驱,系统将会d出如下安装界面(也可以运行光盘根目录下的Startexe程序d出该界面)。 2、 单击安装界面中“InterBase服务器安装”按钮 3、单击“Next >”按钮 4、仔细阅读上图信息,看看有什么值得注意的信息,然后按“Next>”按钮 5、认真阅读许可协议,如果同意该协议,按“Yes”按钮 6、在Certificate ID栏中输入“eval”,系统会自动屏蔽Certificate Key栏。虽然这样安装的Interbase服务器是时间受限版本,但是等安装了正版的“速达3000Pro网络版服务器”程序后,程序会自动用InterBase公司受权的正式版本的ID号及Key值覆盖你刚才输入的时间受限版本的ID号,使你成为InterBase公司授权的正式版本的用户。

其他语言

用于开发数据库应用程序的语言中 还可以使用目前数常见的 面向对象程序设计 (OOP)语言 如C++ Objact Pascal等 OOP代表了一种完全不同的程序设计方法 在这种程序设计方法中 活动被定义为在 对象 上发生的 *** 作 而不是作为一系列过程来定义的 在数据库应用程序中使用OOP语言的情况正在不断增加

开发数据库应用程序使用的另一种语言是 宏 语言 宏语言不是一种完全的程序设计语言 它实际上是一个用户手工输入的表 这个表被输入到应用程序中 以便自动执行一定的任务 对于某个特定应用的高级语言 宏语言通常可以在低档DBMS软件中或数据库服务器的前端中找到

最后 还有一种 Query By Example (QBE 范例查询)语言 严格地讲QBE不是一种语言 它是面向用户提供了一个或多个空表的界面 这些空表对应于数据库中的表 用户可以通过键盘选择需要查询的列 并在适当的列中填入条件从而定义查询的检索条件 然后DBMS就把QBE转换成相应的动作 以完成用户要求的查询任务

Delphi的数据库特性及功能简介

直到目前为止 计算机软件的开发分为两个不同的体系 其中一个体系是使用传统的程序设计语言(如Pascal Basic和C等)开发数值控制 数值运算等软件 围绕它们的重点是算术 数据结构以及近年产生的面向对象技术 另一个体系则是通用的数据库管理软件领域(数据库应用程序的开发) 这两个体系的发展都极为迅猛 但是二者并没出现混合渗透迹象 如果使用数据库语言进行传统的算术编程 虽然也能完成相应的功能 但是其编程过程可能极为复杂 如果使用传统的编程语言进行数据库编程 通过调用专用的数据库应用程序接口函数和过程 利用这些函数和过程提供的功能 可能也能做得比较完善 但这做起来大多是极其困难的 而Delphi结合了两个体系的优点 它结合了传统的编程语言Object Pascal和数据库语言的强大功能 它即可以用于传统的算术编程又可以用于数据库编程 特别是Delphi具有强大的数据库功能 利用Delphi的数据库工具 我们根本不需要编写任何Object Pascal代码便可以创建一个简单的数据库应用

Delphi是Borland公司于 年底发布的用于开发数据库应用程序的工具 它是面向对象的 它是目前开发客户/服务器数据库应用程序的强有力的工具 Delphi在Window 以上版本的系统环境下运行 目前具有两个版本 Delphi的标准版本和客户/服务器版本 标准版本包含一个Borland Database Engine的局部拷贝 它允许用户创建能访问dBASE Paradox和Local InterBase 服务器的数据库应用 它还支持具有 ODBC 接口的数据库 Delphi的客户/服务器版本包括Borland SQL Link 它能直接访问 ORACLE SyBase 和Microsoft SQL Server Informix以及InterBase数据库服务器

Delphi可以访问多种数据库管理系统的数据库 凭借窗体(Forms)和报表(Reports) BDE(Borland Database Engine)可以访问诸如Paradox dBASE 本地InterBase 服务器的数据库 也可以访问远程数据库服务器上的数据库(如ORACLE SyBase Informix等客户/服务器数据库中的数据库) 或任何经ODBC(Open Database Connecticity) 可访问的数据库管理系统中的数据库

Delphi的数据库特性

跟其他的应用程序一样 Delphi提供了许多部件以方便地创建数据库应用程序 数据库对象的数据成员既可在设计阶段设置 也可在运行阶段通过程序代码进行设置 Delphi的部件板上提供了两页数据库应用程序开发中所要使用的部件

数据访问页(Data Access Page)上的部件用于直接访问数据库中的数据库表

数据控制页(Data Control Page)上的部件用来与用户交互 显示 修改数据库中的数据

数据库应用程序首先是利用Delphi提供的数据库部件与BDE建立联系 然后再通过BDE与数据库联系 下图阐述了Delphi的数据库工具和部件 Delphi数据库应用程序与BDE 数据源之间的关系

下表概括了Delphi的数据库特性

表 Delphi的数据库特性

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

工具和部件   主 要 用 途

──────────────────────────────────────

Data Access Components  访问数据库 数据库表 存贮过程等

──────────────────────────────────────

Data Control Components  与用户交互 提供显示 修改数据库中数据的界面

──────────────────────────────────────

Database Desktop(DBD)  建立 索引 查询数据库表以及访问 编辑来自各数据中的数据

──────────────────────────────────────

ReportSmith  建立 浏览和打印数据库表中的数据

──────────────────────────────────────

Borland Database Engine  数据库应用通过BDE访问dBASE Paradox数据库中的数据(BDE)  和本地InterBase数据库服务器中的数据

──────────────────────────────────────

BDE Configuration  建立和管理BDE与数据库建立连接时所使用的数据库的

Utility  别名

──────────────────────────────────────

Local InterBase Server  它是一个单用户 多例程的本地SQL数据库服务器 可在单机环境下用来开发或测试客户/服务器数据库应用程序 然后再将之扩展成一个访问远程数据库服务器如ORACLE SyBase Informix等

──────────────────────────────────────

InterBase SQL Link  连接Delphi数据库应用程序一本地InterBase服务器的驱动程序

Delphi上述这些特性使得我们创建数据库应用程序通过BDE能够很灵活地与 dBASE Paradox Local InterBase数据库服务器进行连接并可以方便地访问其中的数据 我们在创建一个简单的数据库应用时通过使用Delphi提供的上述工具和部件甚至可以不需编写任何程序

BDE被自动地包含在Delphi中 因此 我们在创建数据库应用程序时 不必关心BDE的有关内容 Delphi的安装程序自动为Paradox dBASE和本地InterBaseServer 安装相应的驱动程序 并建立了有关的配置 DBE Configuration Utility 可以建立应用程序与数据库的连接信息 还可以为数据库设置别名

下表列出了Delphi开发Client/Server应用程序的有关特性 这些特性扩展了 Delphi访问远程数据库的功能 如SQL数据库服务器(ORACLE SyBase Informix Microsoft SQL Server InterBase)

表 Delphi Client/server数据库特性

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

工 具   主 要 用 途

─────────────────────────────────

SQL Drivers  SQL Drivers中的SQL link和ReportSmith为Delphi数据库应用程序提供了访问远程SQL服务器的驱动程序 如访问ORACLE SyBase Microsoft SQL server Informix Intermix

 ─────────────────────────────────

lishixinzhi/Article/program/Delphi/201311/25183


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13454481.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-10
下一篇 2023-08-10

发表评论

登录后才能评论

评论列表(0条)

保存