一个系统都会有很多功能模块的,也许每个模块就是一个form,那里面肯定会有对数据库的访问部分,比如根据select字段值啊等等。那每个Unit里都会有一些这样的操作,感觉代码类似的重复,所以想把对数据库的操作部分放到一个公共的unit里。大侠们都是如何设计的呢?请指教啦。^_^
解决方案 »
- help!!!windows media format SDK 流媒体
- TDAODatabase控件那里可以下载
- 怎么通过 消息 关闭 ShowModal 的 窗口
- 如何向一字符串中插入字符???
- TlistView在运行后,用户能用鼠标或键盘编辑(修改)TListView的信息吗?如果可以,怎么操作
- web方式下的Gis用Mapx控件能否实现?
- 如何修改mainmenu中的某个Item的enabled属性?
- 怎么取得CppWebBrowser里的内容?
- 如何用Delphi开发可被ASP调用的组件?
- 如何在代码中实现将Fields加入到 Fields Editor 中?
- 请教一个问题
- 请教关于Windows服务的问题.
我曾经这样写过
把对数据库的操作写成了三个部分
1.Select表或视图
2.执行存储过程不返回结果集
3.执行存储过程要返回结果集
这三个通用的过程,然后在不同地方调用!
1.执行查询语句
function pCreateDataSet(SQLStr : String) : TADOQuery;
begin
Result := TADOQuery.Create(nil);
try
Result.Connection := pvADOConn; //pvADOConn为连接数据库的公共字符串
Result.SQL.Add(SQLStr);
Result.Open;
except
on E : Exception do
begin
Result.Free;
Result := nil;
pSaveToLog(FormatDateTime('YYYY.MM.DD HH:NN:SS',Now));
pSaveToLog('=================');
pSaveToLog('错误信息:'+E.Message);
pSaveToLog('SQL 语句:'+SQLStr);
pSaveToLog(' ');
pInfoDlg(nil,Format(S_DBSQLError,[SQLStr]));
end;
end;
end;2.释放数据集
function pFreeDataSet(var DataSet : TADOQuery) : Boolean;
begin
if DataSet <> nil then
begin
DataSet.Close;
DataSet.Free;
DataSet := nil;
end;
Result := True;
end;3.执行一些统计,更新,删除语句
function pExecSQL(SQLStr : String) : Boolean;
var
TempTab : TADOQuery;
begin
TempTab := TADOQuery.Create(nil);
TempTab.Connection := pvADOConn; //pvADOConn为连接数据库的公共字符串
TempTab.SQL.Add(SQLStr);
try
TempTab.ExecSQL;
TempTab.Free;
Result := True;
except
on E : Exception do
begin
TempTab.Free;
Result := False;
pSaveToLog(FormatDateTime('YYYY.MM.DD HH:NN:SS',Now));
pSaveToLog('=================');
pSaveToLog('错误信息:'+E.Message);
pSaveToLog('SQL 语句:'+SQLStr);
pSaveToLog(' ');
pInfoDlg(nil,Format(S_DBSQLError,[SQLStr]));
end;
end;
end;调用方式:
var
ADOQuery1 : TADOQuery;
begin
try
ADOQuery1 := pCreateDataSet('select * from table1');
finally
pFreeDataSet()
end;
end;//pExecSQL直接调用即可:
如pExecSQL('delete from tabel1') ;
pExecSQL('update tabel1 set field1=100 ') ;
建议看一下java jdbc编程指南with j2ee