请问大家在做数据库编程时怎么运用面向对象的知识啊。我的意思是说怎样将*界面逻辑与业务逻辑分开描述*。
例如
有一Student表 有三个字段 Name ,Sex ,Birthday这里都是字符型的;
Unit1(Form1)主窗体中有三个Label和Edit分别来对应各个字段,增、删、改按钮等。
Unit2(所谓的业务逻辑) 定义一个TStudent的类,结构大致如下:
...
private
FAdoquery:TAdoquery;//用来传递Adoquery控件的查询
FName:String;//以下分别对应三个字段
FSex:String;
FBirthday:String;
function GetName:String;
function GetSex:String;
function GetBirthday:String;
...
public
function ExeSql(Adoquery:TAdoquery ; Sqls:String ; Open:Boolean ) :boolean;
//用来执行查询的函数
function GetSqls(Index:Integer):String;//用来返回Sql语句
...
published
property Name:String Read GetName Write FName;
property Sex...
property Birthday...
end;function ExeSql(Adoquery:TAdoquery ; Sqls:String ; Open:Boolean ) :boolean;
begin
FAdoquery:=Adoquery;
with Adoquery do
begin
close;
sql.clear;
sql.add(Sqls);
// Open是一个Boolean型的参数,用来判断是查询(Open)还是更新(ExecSql)
if open then
open
else
ExecSql;
end;
result:=true;
end;function GetSqls(Index:Integer):String;
var s:string;
begin
case index of
1:s:='select * from student';
2:...
3:...
end;
result:=s;
endfunction GetName:String;
begin
FName:=FAdoquery.FieldByName('Name').AsString;
result:=FName;
end;
...
不知道我这样做对不对,还请高手指教。还有,我不知道,增、删、改操作该怎么样进一步的封装,还有其它的操作大家也一起说了吧,我不嫌多哦,谢谢了。
例如
有一Student表 有三个字段 Name ,Sex ,Birthday这里都是字符型的;
Unit1(Form1)主窗体中有三个Label和Edit分别来对应各个字段,增、删、改按钮等。
Unit2(所谓的业务逻辑) 定义一个TStudent的类,结构大致如下:
...
private
FAdoquery:TAdoquery;//用来传递Adoquery控件的查询
FName:String;//以下分别对应三个字段
FSex:String;
FBirthday:String;
function GetName:String;
function GetSex:String;
function GetBirthday:String;
...
public
function ExeSql(Adoquery:TAdoquery ; Sqls:String ; Open:Boolean ) :boolean;
//用来执行查询的函数
function GetSqls(Index:Integer):String;//用来返回Sql语句
...
published
property Name:String Read GetName Write FName;
property Sex...
property Birthday...
end;function ExeSql(Adoquery:TAdoquery ; Sqls:String ; Open:Boolean ) :boolean;
begin
FAdoquery:=Adoquery;
with Adoquery do
begin
close;
sql.clear;
sql.add(Sqls);
// Open是一个Boolean型的参数,用来判断是查询(Open)还是更新(ExecSql)
if open then
open
else
ExecSql;
end;
result:=true;
end;function GetSqls(Index:Integer):String;
var s:string;
begin
case index of
1:s:='select * from student';
2:...
3:...
end;
result:=s;
endfunction GetName:String;
begin
FName:=FAdoquery.FieldByName('Name').AsString;
result:=FName;
end;
...
不知道我这样做对不对,还请高手指教。还有,我不知道,增、删、改操作该怎么样进一步的封装,还有其它的操作大家也一起说了吧,我不嫌多哦,谢谢了。
解决方案 »
- 低调蛋帖
- 继续求解:ListView图标显示问题
- 请大家支持我的论坛
- 救命呀:怎么用FTP远程打开和更改UNIX的文本文档(100分)
- 我是新手几个简单的问题[Error] Unit1.pas(24): Unsatisfied forward or external declaration: 'TForm1.Button2Click'
- 登陆服务器
- 请问在DLL里能不能使用TIMER控件或者TIMER类?
- 如何取得webbrowser中frame中载入的htm文件的title或是文件的名称
- 有两个窗口,请问如何实现拖动其中一个窗口,另外那个窗口的也跟着移动?
- 请大家多动手。
- 数据感知组件如何显示记录集RecordsSet的数据
- 请教:关于timer的问题
我加你QQ了
TO:cciioo
《borland社区最经典的面向对象实例》是一本书名吗?还是别的
DELPHI2006可以直接把数据库里面的表转化为对象
//////////////
你说的是???ECOIII???
建议你去看《borland社区最经典的面向对象实例》