⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 026.htm

📁 Delphi书籍--Delphi网上教程
💻 HTM
字号:
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=GB2312"><TITLE>-->DELPHI专题文档-数据库应用-->利用Delphi开发网络数据库应用</TITLE>
<META NAME="keywords" CONTENT=" DELPHI专题文档-数据库应用 利用Delphi开发网络数据库应用">
<META NAME="description" CONTENT=" - DELPHI专题文档-数据库应用 - 利用Delphi开发网络数据库应用">

<style>
<!--
#page {position:absolute; z-index:0; left:0px; top:0px}
.tt3 {font: 9pt/12pt "宋体"}
.tt2 {font: 12pt/15pt "宋体"}
a {text-decoration:none}
a:hover {color: blue;text-decoration:underline}
-->
</style>
</HEAD>
<a href="index8.html">返回</a>

<body text="#000000" aLink=#9900ff link=#006699 vLink=#006699 bgcolor="#FFFFFF" leftmargin="3" topmargin="3" marginheight="3" marginwidth="3">
<TABLE WIDTH="100%" CELLPADDING=10 CELLSPACING=0 BORDER=0>
<TR>

<TD class="tt2" bgcolor="#F5F8F8" width="84%"><center><B><FONT style="FONT-SIZE: 16.5pt" COLOR="#FF6666" FACE="楷体_GB2312">利用Delphi开发网络数据库应用</FONT></B></center>
<hr color="#EE9B73" size="1" width="94%">
<p><span style="font-size: 9pt"><font color="#ffffff">----</font> Delphi 
是具可视化界面的面向对象编程语言,它以其功能强大、简便易用等诸多特性,深受编程人员的欢迎。Delphi中提供了数据库引擎 BDE(Borland Database Engine),并内含众多的数据库调用构件,为编程人员开发客户/服务器应用程序提供了方便。通常情况下,利用Delphi 开发数据库应用程序,可以使用TTable、TDataSource、TDBEdit、TDBNavigator等构件。只要正确设置了构件的某些属性,再编写必要的程序代码对一些特定事件进行处理,就能够完成对多种数据库进行的数据处理,例如:记录的输入、修改、删除和查询等。这样做虽然只需要编写极少量的程序代码就能达到很好的效果,但如果在程序设计过程中,某些数据表的结构发生了改变,则必须修改与此数据表有关的所有构件的属性,这将使程序员陷入繁琐的重复劳动中。 
</span></p> 
<p><span style="font-size: 9pt"><font color="#ffffff">----</font> 
为避免上述的麻烦,我们可以在编写网络数据库应用程序时采用结构化查询语言 
SQL(Structured Query Language),这样不仅可以更方便地与诸如 SQL Server、Oracle 
等各种后台数据库进行动态的数据交换,而且可以使程序的修改和移植更加灵活。我们以数据输入模块为例,说明开发客户/服务器应用程序时如何采用 
SQL 
语句实现数据处理功能。首先,判断是否已经有事务处理程序在运行,如果有,将其回卷(rollback);如果没有,则启动一个新的事务,为数据的最终处理做准备。其次,是设置 
SQL 语句,并将其写入 TQuery 
构件中。最后,将事务提交或回卷,至此完成一条记录的数据输入。 
</span></p> 
<p><span style="font-size: 9pt"><font color="#ffffff">----</font> 下面是以页面中的 
TEdit 类型编辑框内容作为数据源,向数据库输入记录的过程代码: </span></p> 
<BR> 
<pre><span style="font-size: 9pt">procedure DataInsert(const qName:TQuery;
szDBName:string;iNum:Integer;
iMark:array of Integer;eName:array of TEdit);
var
i : Integer;
szSQL : string;
begin
if DataModule1.DataBase1.InTransaction=true then
	DataModule1.DataBase1.RollBack;
DataModule1.DataBase1.StartTransaction;
szSQL := 'INSERT INTO '+szDBName+' VALUES('
for i:=0 to iNum-1 do
begin
if iMark[i]=0 then
	szSQL := szSQL+eName[i].Text	{非字符方式}
else
	szSQL := szSQL+'&quot;'+eName[i].Text+'&quot;';	{字符方式}
if i=iNum-1  then
szSQL := szSQL+')'
else
	szSQL := szSQL+',';
end;
qName.Close;	{关闭查询}
qName.SQL.Clear;	{清SQL特性内容}
qName.SQL.ADD(szSQL);	{添加SQL内容}
szSQL := 'SELECT * FROM '+szDBName;
qName.SQL.ADD(szSQL);
qName.Open;	{返回结果集}
DataModule1.DataBase1.Commit;
end;</span></pre> 
<p><span style="font-size: 9pt"><font color="#ffffff">----</font> 
以上过程包含五个参数,实现从页面中的一系列编辑框中读取数据,并向指定数据表输入的功能。其中,参数 
qName 为页面中所使用的 TQuery 类构件的名称;参数 szDBName 
是数据表的名称;参数eName 是 TEdit 
类型的数组,列出了页面中包含数据的各编辑框名称;参数 iNum 
是数据表中的字段个数,也即编辑框的个数;参数 iMark 
是一个整数类型的数组,该参数表明相应字段是以何种方式输入的,如果是字符方式,需要在数据前后两端加上引号。需要注意的是:在调用本过程之前,应将数据库连接打开: 
</span></p> 
<BR> 
<pre><span style="font-size: 9pt">DataModule1.DataBase1.Connected := true;


过程调用完成后,将数据库连接断开:
DataModule1.DataBase1.Connected := false;</span></pre> 
<p><span style="font-size: 9pt"><font color="#ffffff">----</font> 
另外,开发网络数据库应用程序时,还可以使用存储过程,即:将预先编译过的 
SQL 
语句存储在服务器上。存储过程提前运行,且不与程序代码一同存储和编译,因此其对应主程序中的代码相对简洁,运行速度也较快。SQL 
语句的集中存放,使其修改更容易。 </span></p> 
<p><span style="font-size: 9pt"><font color="#ffffff">----</font> 
要创建向数据表中输入数据的存储过程,代码编写举例如下: </span></p> 
<BR> 
<pre><span style="font-size: 9pt">CREATE PROC ProcTest1
@inttest smallint
,@strtest char(4) output
AS
INSERT INTO TEST_User.TRANS_TEST
VALUES(@inttest,@strtest)
SELECT @strtest,* FROM TEST_User.TRANS_TEST</span></pre> 
<p><span style="font-size: 9pt"><font color="#ffffff">----</font> 以上代码向数据表 
TEST_User.TRANS_TEST 添加数据,该数据表包括两个字段:第一个字段为 
smallint 类型的数据,参数类型定为 Input(在存储过程中可缺省);第二个字段数据为长度为4 
的字符类型,参数类型为 Output。 </span></p> 
<p><span style="font-size: 9pt"><font color="#ffffff">----</font> 
其模块程序的编写与 DataInsert 
过程相似,区别主要在于模块的中间部分,对应的主要代码如下: </span></p> 
<BR> 
<pre><span style="font-size: 9pt">StoredProc1.Close;
{关闭存储过程}
StoredProc1.Params[1].ParamType := ptInput;
{设置存储过程的参数类型}
StoredProc1.Params[1].AsInteger := 1;
	{设置存储过程中参数的数据}
StoredProc1.Params[2].ParamType := ptOutput;
StoredProc1.Params[2].AsString := 'abcd';
StoredProc1.Open;	{打开存储过程}</span></pre> 
<p><span style="font-size: 9pt"><font color="#ffffff">----</font> 其中,StoredProc1 是 
TStoredProc 类型的构件名称;Params[1] 
是存储过程中的第一个参数,对应存储过程 ProcTest1 可以用ParamByName('@inttest')代替;存储过程的第二个参数与其类似。 
</span></p> 
<p><span style="font-size: 9pt"><font color="#ffffff">----</font> 
实际上,编写对网络数据库进行其他数据处理(如:修改、删除和查询等)的模块,与数据的输入模块大体相似,这里就不再赘述了。 
</span></p> 
<hr color="#EE9B73" size="1" width="94%"> 
 
</TD> 
 
</TR> 
</table> 
</BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -