分虽然少,可是问题还是要解决!:)帮忙下!!谢谢!! ( 积分: 22 )

  • 主题发起人 主题发起人 take2001
  • 开始时间 开始时间
T

take2001

Unregistered / Unconfirmed
GUEST, unregistred user!
bdelist:=tstringlist.Create();
bdelist.Add('server name=127.0.0.1');
bdelist.Add('database name=work'); //数据库名为'work'
bdelist.Add('user name=sa');
try
if session.IsAlias('ssps') then //判断ssps别名是否存在,如果存在则删除
session.DeleteAlias('ssps');
session.AddAlias('ssps','mssql',bdelist); //新建一个自己的ssps别名
database1.Connected:=false;
database1.AliasName:='ssps'; //别名
database1.DatabaseName:='work'; //数据库名为work
database1.LoginPrompt:=false;
database1.Connected:=true;
database1.KeepConnection:=false;
except
showmessage('连接数据库出错....');
bdelist.Free;
exit;
end;
database1.Connected:=false;
bdelist.Free;
以上是在form创建时建立的,

下面的单击某个按钮时触发的事件
database1.Connected:=true;
database1.StartTransaction;
try
query1.Close; //query1的databasename是直接添数据库名work
query1.SQL.Clear;
query1.SQL.Add('insert into rkd(凭证号)values('123456')');
query1.ExecSQL;
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('insert into rkd_tm(条码)values(qwert)');
query1.ExecSQL;
database1.Commit;
except
database1.Rollback;
application.MessageBox('存储异常','提示信息',mb_iconerror);
raise;
exit;
end;
database1.connected:=false;
这样写,我在存储'条码'时发生异常了,也捕捉到了,可是他照样把我的'凭证号'也存储进去了,怎么不会回滚呢? 哪里出错了?能帮忙看下吗?
 
不好查错误的,写到存储过程里面方便
 
上面并没有错,只是我故意在插入条码的时候,故意写错!可以他怎么不会回滚呢?
 
Rollback是Database1的,跟Query1不相干的吧
query1.ExecSQL;已经更新数据库了,还怎么Cancel。
 
query1是通过batabase连接到数据库work的,应该可以回滚的吧!
 
database1.Commit;
这句放在 try except end 的后面试试
 
还有就是你的 query 的 databaseName 和 database 的 databasename 要一样
 
有一样的啊!!我上面不是有写了!
 
加一个TSession组件,把Database1和Query1连起来试试
 
database和query在不同的form能连得起来?
 
后退
顶部