对事务处理有些了解的进来看看! ( 积分: 40 )

  • 主题发起人 主题发起人 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是利用ssps别名连接数据库
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;
这样写,我在存储'条码'时发生异常了,也捕捉到了,可是他照样把我的'凭证号'也存储进去了,怎么不会回滚呢?
 
query1要连在database1上
 
弱弱的问一下,query怎么连在database1上?
 
小林,//query1是利用ssps别名连接数据库===>> 应该用这个连接:database1.DatabaseName:='work'; //数据库名为work
 
我在form创建时,不是有设database1.DatabaseName:='work'了吗?
具体要怎么改呢?
 
Query1.databasename := 'work';
 
这样还能连接的上数据库?
 
多人接受答案了。
 
后退
顶部