知识大全 Delphi客户服务器应用开发(四)[4]
Posted 知
篇首语:没有加倍的勤奋,就既没有才能,也没有天才。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Delphi客户服务器应用开发(四)[4]相关的知识,希望对你有一定的参考价值。
DELPHI基础教程:Delphi客户服务器应用开发(四)[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
客户端执行SHIP_ORDER的程序如下
procedure TFrmExecProc BtnShipOrderClick(Sender: TObject)
begin
with DmEmployee do
begin
ShipOrderProc Params[ ] AsString := SalesTable[ PO_NUMBER ];
ShipOrderProc ExecProc;
SalesTable Refresh;
end;
end;
当用户按ShipOrder按钮时 执行这段程序 程序中先准备输入参数 用ExecProc方
法执行存储过程 调用SalesTable Refresh方法刷新数据显示
在CSDEMO应用程序中另一个使用存储过程的TStoredProc部件是DeleteEmployeeProc 它完成的任务是删除Employee表中的记录 并修改所有相关的表 以维护数据的一致性 其属性如下
表 DeleteEmployeeProc部件主要属性的取值
━━━━━━━━━━━━━━━━━━━━━━━━━━
属性名 属 性 值
──────────────────────────
DataBaseName EmployeeDemoDB
ParamBindMode PbByName
Params EMP_NUM(输入参数 整型)
StoredProcName DELETE_EMPLOYEE
━━━━━━━━━━━━━━━━━━━━━━━━━━
存储过程DELETE_EMPLOYEE的程序如下
PROCEDURE DELETE_EMPLOYEE
DECLARE VARIABLE any_sales INTEGER;
BEGIN
any_sales = ;
SELECT count(po_number)
FROM sales
WHERE sales_rep = :emp_num
INTO :any_sales;
IF (any_sales > ) THEN
BEGIN
EXCEPTION reassign_sales;
SUSPEND;
END
UPDATE department
SET mngr_no = NULL
WHERE mngr_no = :emp_num;
UPDATE project
SET team_leader = NULL
WHERE team_leader = :emp_num;
DELETE FROM employee_project
WHERE emp_no = :emp_num;
DELETE FROM salary_history
WHERE emp_no = :emp_num;
DELETE FROM employee
WHERE emp_no = :emp_num;
SUSPEND;
END
Parameters:
EMP_NUM INPUT INTEGER
从上述存储过程的例子中 我们看到存储过程在维护服务器上的数据一致性方面有很强的能力 它节省了系统开销 提高了客户端的性能
事务控制编程
在客户/服务器应用程序中 事务控制是一项很重要的技术 它对于提高系统的可靠性 维护数据一致性有着重要的意义
Delphi中提供了事务的隐式和显式两种控制方法 其中显式控制的性能较高 下面介绍Delphi事务显式控制的编程方法
Delphi担当事务控制任务的部件是TDatabase TDatabase 用于事务控制的属性是TransIsolation 方法有StartTranstion Commit和Rollback 关于这些属性和方法作用和使用方法请参阅客户/服务器事务管理
在CSDEMO中TDatabase 部件为EMployeeDatabase 其TransIsolation属性值为tiReadCommitted 意为如果存在多个同时事务访问数据库 则其中任一事务只能读其它事务提交的了数据
CSDEMO中演示事务控制的窗体是TFrmTransDemo
DBGrid 中显示EmployeeTable中的内容 当窗口显示时 EmployeeDatabase开始一次事务控制并激活EmployeeTable:
procedure TFrmTransDemo FormShow(Sender: TObject)
begin
DmEmployee EmployeeDatabase StartTransaction;
DmEmployee EmployeeTable Open;
end;
当窗口被关闭或隐藏时 EmployeeDatabase提交事务
procedure TFrmTransDemo FormHide(Sender: TObject)
begin
DmEmployee EmployeeDatabase Commit;
end;
窗口中有两个按钮BtnCommitEdits和BtnUndoEdits 按下BtnCommitEdits按钮将提交当前事务 并开始新的事务控制并刷新数据
procedure TFrmTransDemo BtnCommitEditsClick(Sender: TObject)
begin
if DmEmployee EmployeeDatabase InTransaction and
(MessageDlg( Are you sure you want to mit your changes?
mtConfirmation [mbYes mbNo] ) = mrYes) then
begin
DmEmployee EmployeeDatabase Commit;
DmEmployee EmployeeDatabase StartTransaction;
DmEmployee EmployeeTable Refresh;
end else
MessageDlg( Can t Commit Changes: No Transaction Active mtError [mbOk] )
end;
按下BtnUndoEdits按钮将返转当前事物 恢复原来的数据 开始新的事务控制 并刷新数据的显示
procedure TFrmTransDemo BtnUndoEditsClick(Sender: TObject)
begin
if DmEmployee EmployeeDatabase InTransaction and
(MessageDlg( Are you sure you want to undo all changes made during the +
current transaction? mtConfirmation [mbYes mbNo] ) = mrYes) then
begin
DmEmployee EmployeeDatabase Rollback;
DmEmployee EmployeeDatabase StartTransaction;
DmEmployee EmployeeTable Refresh;
end else
MessageDlg( Can t Undo Edits: No Transaction Active mtError [mbOk] )
end;
返回目录 DELPHI基础教程
编辑推荐
Java程序设计培训视频教程
J EE高级框架实战培训视频教程
Visual C++音频/视频技术开发与实战
Oracle索引技术
ORACLE G数据库开发优化指南
Java程序性能优化 让你的Java程序更快 更稳定
C嵌入式编程设计模式
Android游戏开发实践指南
cha138/Article/program/Delphi/201311/25128相关参考
DELPHI基础教程:Delphi客户服务器应用开发(四)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
DELPHI基础教程:Delphi客户服务器应用开发(四)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
DELPHI基础教程:Delphi客户服务器应用开发(二)[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
DELPHI基础教程:Delphi客户服务器应用开发(三)[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
DELPHI基础教程:Delphi客户服务器应用开发(一)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
DELPHI基础教程:Delphi客户服务器应用开发(一)[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
DELPHI基础教程:Delphi客户服务器应用开发(一)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
DELPHI基础教程:Delphi客户服务器应用开发(二)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
DELPHI基础教程:Delphi客户服务器应用开发(二)[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
DELPHI基础教程:Delphi客户服务器应用开发(二)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起