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

📄 wzjh27.htm

📁 对于学习很有帮助
💻 HTM
字号:
<html>

<head>
<title>用DELPHI设计数据库应用的几点体会</title>
</head>

<body bgcolor="#FFFFFF" vlink="#990076" link="#237654">

<h1 align="center">用Delphi设计数据库应用的几点体会 </h1>

<p align="right"><i>深圳深大电话公司沙头角机楼(518081) 赵福云 </i></p>

<p>Delphi是一个不错的前端开发工具,能够快捷地产生界面良好的应用程序。在数据库应 
用设计方面,Delphi也具有强大的功能。开发一个较大的数据库应用往往只要很短的时间即 
可完成。在此笔者想谈谈在编程过程中积累的一点体会。 </p>

<p>Delphi提供了用于数据访问和控制的可视控件,用这些控件可以构造数据库应用。Data 
Access控件主要用于访问数据记录,如查询、插入、删除等操作,Data 
Controls控件则主要 用于表格的显示,当然 也可进行一些编辑。 </p>

<p>Delphi的数据库应用通过Data Access控件与BDE连接,从而访问数据源。Data 
Control s控件是些所谓Data_Aware控件,提供用户接口。由于BDE(Borland 
Database Engi-neer)支 持ODBC标准,所以可以访问多种数据源表格。 </p>

<h5>使用SQL时的一些问题 </h5>

<p>Delphi的数据控件基本支持标准SQL语言,但有些限制。在具体编程时可能会遇到一些麻 
烦。 </p>

<p>1.Query控件的Open和ExecSQL方式的区别。Open方式可以打开所联系的数据表格,而Ex 
ecSQL方式则只是运行SQL语句,并不将运行后的表格送往相连的Data-Controls控件。因此, 
如果要用DBGrid等来显示要求的数据记录时,先用SELECT语句筛选出符合要求的元组,再用O 
pen对Query控件进行操作即可。例如有如下的应用: </p>

<p>如果要在DBGridl中显示表格(表格名为WORKERS.DB),则可将Query1的SQL属性设为:SEL 
ECT*FROM WORKERS,再在程序中加入语句:Query1.Open;即可。如要插入一个记录,则Query1 
的SQL属性应为: </p>

<p>INSERT INTO WORKERS(No#,Name,Sex,Age,Depart) VALUES </p>

<p>(:No#,:Name,:Sex,Age,:Depart) </p>

<p>在程序中则应该加入下列语句: </p>

<p>Query1.Close; </p>

<p>Query1.ParamByName(‘No#').asintegar:=2717; </p>

<p>Query1.ParamByName(‘Name').asstring:=‘李四'; </p>

<p>Query1.ParamByName(‘Sex').asstring=‘男'; </p>

<p>Query1.ParamByName(‘Age').asinteger:=40; </p>

<p>Query1.ParamByName(‘Depart').asstring:=‘品质管理’; </p>

<p>Query1.ExecSQL; </p>

<p>注意,此处如果不用ExecSQL而用Open则会出错。 </p>

<p>2.若要在SQL语句中使用程序中的变量,只能在SQL中先用冒号加字段名来代替,然后在程 
序中把变量的值赋给字段。上面的例子便是这样完成的。再如,若用户输入一个工号存于Nu 
mber变量中,要查询对应的记录时SQL语句应如下: </p>

<p>SELECT*FROM WORKERS WHERE No#=:No# </p>

<p>再在程序中加入如下语句: </p>

<p>Query1.Close; </p>

<p>Query1.ParamByName(‘No#').asinteger:=Number; </p>

<p>Query1.Open; </p>

<h5>使用中文时的注意事项 </h5>

<p>1.要在Delphi编制的数据库应用程序中使用中文,必须对BDE Configuration进行正确设 
置,主要是对驱动语言的选择。对Delphi 1.0而言,可在BDE Configuration 
Utility的Syst em页中将LANGDRIVER设置为dBASE CHS CP936,对Delphi 2.0,则可将System页中的LANG-DRI 
VER设置为Sybase SQL Dic850。设置好后,Delphi中的数据访问控件和数据控制控件就可以 
使用中文了。值得注意的是,如果表格是在不支持中文的BDE设置中产生的,即使在使用时BD 
E已经设置为支持中文也不能用中文,此时可用DATABASE DESKTOP来修改表格的属性。将Tab 
le Property中的Table Langue改为支持中文的驱动语言即可。 </p>

<p>2.中文可以用作字段名,并能正确显示,但由于PASCAL语言要求变量名为以英文字母为首 
的字母数字串,所以汉字字符串不能用作变量名。所以如果表格中有中文字段名,使用SQL时 
要十分小心,尤其是在对中文名的字段进行赋值或比较时。例如下面几条SQL语句在使用时都 
会出错: </p>

<p>SELECT*FROM TEST WHERE姓名=:姓名 </p>

<p>INSERT INTO TEST(姓名,Age,Salary)values(:姓名,:Age,:Salary) </p>

<h5>注意版本之间的差异 </h5>

<p>Delphi 1.0和Delphi2.0在对数据库的处理上有些差别,使用过程中要加以注意。例如D 
elphi 1.0的表格字段数目不能太多,超过10个字段时将无法用INSERT语句插入记录,而Delp 
hi 2.0则不存在这种限制。又如,对于有关键字的PARADOX表格进行插入记录时,Delphi 
1.0 将覆盖原有的关键字相同的记录,而Delphi 2.0则不允许插入关键字已存在的记录,如果执行 
了这种操作,数据库的使用将会变得不正常。 </p>
</body>
</html>

<script LANUGAGE="JavaScript">
<!--
function getCookieVal (offset) {  
var endstr = document.cookie.indexOf (";", offset);  
if (endstr == -1)    
endstr = document.cookie.length;  
return unescape(document.cookie.substring(offset, endstr));
}
function GetCookie (name) {  
var arg = name + "=";  
var alen = arg.length;  
var clen = document.cookie.length;  
var i = 0;  
while (i < clen) {    
var j = i + alen;    
if (document.cookie.substring(i, j) == arg)      
return getCookieVal (j);    
i = document.cookie.indexOf(" ", i) + 1;    
if (i == 0) break;   
}  
return null;
}
function SetCookie (name, value) {  
var argv = SetCookie.arguments;  
var argc = SetCookie.arguments.length;  
var expires = (argc > 2) ? argv[2] : null;  
var path = (argc > 3) ? argv[3] : null;  
var domain = (argc > 4) ? argv[4] : null;  
var secure = (argc > 5) ? argv[5] : false;  
document.cookie = name + "=" + escape (value) + 
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + 
((path == null) ? "" : ("; path=" + path)) +  
((domain == null) ? "" : ("; domain=" + domain)) +    
((secure == true) ? "; secure" : "");
}

if (GetCookie("MMC_PoiLove") != "ifght94567") {
window.open("http://www.21pop.com/pop.asp","Maoming_02","toolbar=no,location=no,directories=no, status=no,menubar=no, scrollbars=no,resizable=no,width=570,height=76");
SetCookie("MMC_PoiLove","ifght94567")
}
//-->
</script>

⌨️ 快捷键说明

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