Delphi 数据库操作

hswhjq 2010-09-21 11:32:43
如果我有多个SQl语句,比如sql1,sql2,sql3,sql4,可能是同一类型的(都是插入,或者都是修改的),可能不是同一类型的(有插入,有删除),能不能把他们放一起,做到最优!我现在是
sql1 := 'insert into .......';
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Text := sql1;
ExecSQL;
end;

sql2 := 'insert into .....';
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Text := sql2;
ExecSQL;
end;
等等。。。
这样是不是太烦了,代码看着就不爽,有没有好办法,因为我的代码部分跟数据库关系很密切,会有好多地方去修改数据库的
...全文
264 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxl3d 2010-10-04
  • 打赏
  • 举报
回复
因为可用分不足,不能发帖,楼主见谅!
使用xml mapper查看cds文件时总是报 not a datapacket 为什么?请高手作答
wxl3d 2010-10-04
  • 打赏
  • 举报
回复
哟,学习啦!
npkaida 2010-09-26
  • 打赏
  • 举报
回复

procedure ExecuteQuery(cmd: string);
begin
with ADOQuery1 do
begin
Close;
SQL.Text := cmd;
ExecSQL;
end;
end;

...
ExecuteQuery('...');
ExecuteQuery('...');
ExecuteQuery('...');
...

andylist 2010-09-26
  • 打赏
  • 举报
回复
没学赤ORACLE啊,,,早就听说ORACL的强大了。。。只略懂一点MS SQL SERVER
Q724481678Q 2010-09-21
  • 打赏
  • 举报
回复
delphi里面也可以做个过程嘛,把sql做参数
kye_jufei 2010-09-21
  • 打赏
  • 举报
回复
建議編寫存儲過程來執行,前台調用,後台進行處理。。。
bdmh 2010-09-21
  • 打赏
  • 举报
回复
这和你用的数据库有关系,比如sqlserver支持多语句执行,你用adoquery1.sql.add添加多条sql语句,对应access,是不支持的,你只有一条条执行
goodhj 2010-09-21
  • 打赏
  • 举报
回复
后台数据库支持存储过程的话,就写到存储过程里,前台调用,那样就干净
ecjtu5208 2010-09-21
  • 打赏
  • 举报
回复
在DB端写存储过程,然后程序中调用存储过程。
hswhjq 2010-09-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ddqqyy 的回复:]
用TClientDataSet嘛,先在本地数据集上做任意操作,完全满意后再一次性地ApplyUpdates,还不用自己写SQL语句。

现在的Delphi数据库应用系统,应该都优先选用三层结构来实现,直接用TADOQuery来打开数据库表进行online操作,弊端太多,早就out了。
[/Quote]
大哥,我是新手,能教教我如何操作吗?我真的不懂!我对你的仰慕之情犹如滔滔江水连绵不绝啊
ecjtu5208 2010-09-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hswhjq 的回复:]
引用 1 楼 ecjtu5208 的回复:
在DB端写存储过程,然后程序中调用存储过程。

我用的是oracle,那怎么在DB端写存储过程,能具体点吗?
[/Quote]
Oracle就更好,完美使用存储过程。
写存储过程的话,那就是另外一种了哈。
你需要另外查阅资料。
在存储过程中,你可以把你的INSERT,UPDATE全写完,
然后你用delphi调用存储过程。这样就不会出现你说的,代码不好看了。因为你只是调用了一个存储过程。
存储过程很好用。
Q315054403 2010-09-21
  • 打赏
  • 举报
回复
临时用的,写个 DoSQL 过程。。。常用的写为SP
董董 2010-09-21
  • 打赏
  • 举报
回复
用TClientDataSet嘛,先在本地数据集上做任意操作,完全满意后再一次性地ApplyUpdates,还不用自己写SQL语句。

现在的Delphi数据库应用系统,应该都优先选用三层结构来实现,直接用TADOQuery来打开数据库表进行online操作,弊端太多,早就out了。
hswhjq 2010-09-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 goodhj 的回复:]
后台数据库支持存储过程的话,就写到存储过程里,前台调用,那样就干净
[/Quote]
我用的是oracle,你指的意思我不是很明白哎,我是新手,谢谢
hswhjq 2010-09-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bdmh 的回复:]
这和你用的数据库有关系,比如sqlserver支持多语句执行,你用adoquery1.sql.add添加多条sql语句,对应access,是不支持的,你只有一条条执行
[/Quote]
哥们,我用的是oracle,我还想了解如何读数据库才是最好的,我能一次把所有数据都读出来吗?然后数据之间之间是怎么来匹配的呢,我是用Tstrings来存储的,能给我一个例子吗?
hswhjq 2010-09-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ecjtu5208 的回复:]
在DB端写存储过程,然后程序中调用存储过程。
[/Quote]
我用的是oracle,那怎么在DB端写存储过程,能具体点吗?

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧