try
begin
sSql := 'SQL语句 1';
DataModule2.Query2.Close;
DataModule2.Query2.SQL.Clear;
DataModule2.Query2.SQL.Add(sSql);
DataModule2.Query2.ExecSQL;
sSql := 'SQL语句 2';
DataModule2.Query2.Close;
DataModule2.Query2.SQL.Clear;
DataModule2.Query2.SQL.Add(sSql);
DataModule2.Query2.ExecSQL;
。SQL语句3
。SQL语句N
DataModule2.Database1.Commit;
end;
except
DataModule2.Database1.Rollback;
raise;
end; //end try 请问用到Query的CachedUpdates属性吗?
还有就是Query.ApplyUpdates与Query.ExecSQL;有什么区别,前者是在什么情况下用
而后者好象就是用来执行SQL语句的吧!好象前者一般都和Query2.CommitUpdates;搭配着用是吗另:DEPHI中执行SQL语句直接用TRY EXCEPT就可以截获SQL语句执行出错吗?
我记得PB中是直接从ODBC获得SQLCODE如果等于-1就证明SQL语句执行出错,不这段DEPHI是不是就用TRYEXCEPT扑获呢?
begin
sSql := 'SQL语句 1';
DataModule2.Query2.Close;
DataModule2.Query2.SQL.Clear;
DataModule2.Query2.SQL.Add(sSql);
DataModule2.Query2.ExecSQL;
sSql := 'SQL语句 2';
DataModule2.Query2.Close;
DataModule2.Query2.SQL.Clear;
DataModule2.Query2.SQL.Add(sSql);
DataModule2.Query2.ExecSQL;
。SQL语句3
。SQL语句N
DataModule2.Database1.Commit;
end;
except
DataModule2.Database1.Rollback;
raise;
end; //end try 请问用到Query的CachedUpdates属性吗?
还有就是Query.ApplyUpdates与Query.ExecSQL;有什么区别,前者是在什么情况下用
而后者好象就是用来执行SQL语句的吧!好象前者一般都和Query2.CommitUpdates;搭配着用是吗另:DEPHI中执行SQL语句直接用TRY EXCEPT就可以截获SQL语句执行出错吗?
我记得PB中是直接从ODBC获得SQLCODE如果等于-1就证明SQL语句执行出错,不这段DEPHI是不是就用TRYEXCEPT扑获呢?
解决方案 »
- 新手,纯属简单问题,请回答!
- 如何判断机器上是否安装有网卡
- 一个简单问题,请大家帮忙解决一下!!!!-----------在线急等
- 使用SQL SERVER 的问题,请指教!!
- Bmp图形用StretchBlt缩小,图形质量严重损失? (在线等候)
- 报表问题?熟悉fastreport报表控件或者用过Delphi7新增的 Rave Report报表控件的请进
- 那位高手能帮我,谢谢!
- 请高手介绍一下动态数组的使用!!
- Delphi高手们请入......画图形(100分以上)
- 高分求:单机数据库控件下载地址?
- 用dbgrid做类似计算器的功能,最好还能能做到和excel一样有灵活的格式,大伙能给点提示吗?
- 有谁用过nms(发送邮件)组件的,请进来。
try
xxxxxx
Database1.Commit;
except
Database1.Rollback
end;
TRY EXCEPT就可以截获SQL语句执行出错!
Query.ExecSQL :执行Query.Sql中的Sql语句,从数据库中取回结果集,执行查询时用。
好象前者只是缓冲更新吧!如果不COMMIT数据就不会真正的进入数据库吧!
用到,因为你想一次性全部提交数据
还有就是Query.ApplyUpdates与Query.ExecSQL;有什么区别,前者是在什么情况下用
而后者好象就是用来执行SQL语句的吧!好象前者一般都和Query2.CommitUpdates;搭配着用是吗
ApplyUpdates 和 CommitUpdates一般在修改数据时,即QUERY和UpdateSQL搭配使用时,而且CachedUpdates属性一般设成TRUE。
如:
with Query1 do
try
Edit;//or Insert ,Append
FieldByName('Id').ASstring := Edit1.text;
...
ApplyUpdates;
CommitUpdates;
except
CancelUpdates;
showmessage('error');
end;
Query.ExecSQL在当QUERY中SQL语句为非查询语句是使用。你的程序应该写成:
CachedUpdates属性设成TRUEDataModule2.Database1.StartTransaction;
try
begin
sSql := 'SQL语句 1';
DataModule2.Query2.Close;
DataModule2.Query2.SQL.Clear;
DataModule2.Query2.SQL.Add(sSql);
DataModule2.Query2.ExecSQL;
sSql := 'SQL语句 2';
DataModule2.Query2.Close;
DataModule2.Query2.SQL.Clear;
DataModule2.Query2.SQL.Add(sSql);
DataModule2.Query2.ExecSQL;
。SQL语句3
。SQL语句N
DataModule2.Database1.Commit;
end;
except
DataModule2.Database1.Rollback;
raise;
end; //end try
with Query1 do
try
Edit;//or Insert ,Append
FieldByName('Id').ASstring := Edit1.text;
...
ApplyUpdates;
CommitUpdates;
except
CancelUpdates;
showmessage('error');
end;
是不是等同与
DataModule2.Query2.CachedUpdates := true;
DataModule2.Database1.StartTransaction
try
sSql := 'update table set field = 'values'';
DataModule2.Query2.Close;
DataModule2.Query2.SQL.Clear;
DataModule2.Query2.SQL.Add(sSql);
DataModule2.Query2.ExecSQL;
DataModule2.Database1.Commit;
except
DataModule2.Database1.Rollback;
raise;
end;
DataModule2.Query2.CachedUpdates := false;是这样吧
Query.ApplyUpdates:提交对Query中数据所做的修改,在修改完成后提交用的。
Query.ExecSQL :执行Query.Sql中的Sql语句,从数据库中取回结果集,执行查询时用。
Query.ExecSQL :执行Query.Sql中的Sql语句有多种可能!!
还有多个SQL只要写一个Database1.Commit是可以的
大飞虫的意见好象不对吧!
Query.ExecSQL 用来执行不需要返回结果集的SQL语句
Query.Open 才是执行可返回结果集的SQL语句的