事务出错the transaction isolation level must be dirty read for local databases

tianwai1718 2010-08-16 05:23:10
事务出错the transaction isolation level must be dirty read for local databases


Query2.close;
Query2.Sql.clear;
Query2.SQL.Add('insert into userr (usernam,psw) values (:usname,:psww)');
Query2.ParamByName('usname').asstring:=ComboBox1.Text;
Query2.ParamByName('psww').asstring:=pssword;
//psword:= Query1.FieldValues['psw'];
//psw:= form1.UncrypKey(psw,'123456');
//psword.Text:=psw;
Database1.StartTransaction; //开始事务控制
try
Query2.ExecSQL; //开始插入记录
Database1.Commit; //提交事务
except
Query2.Free; //如果出错首先将Query Free掉
Database1.RollBack; //回退事务
raise; //重新引发异常,以通知用户
end;
Query2.free;

...全文
120 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianwai1718 2010-08-18
  • 打赏
  • 举报
回复
database1.TransIsolation:= tiDirtyRead ;
错误的提示是意思就是,让本地的数据库的脏读是第二级,就是让database1.TransIsolation赋值为tiDirtyRead ;
阿三 2010-08-17
  • 打赏
  • 举报
回复
有可能数据库不支持事务吧
tianwai1718 2010-08-16
  • 打赏
  • 举报
回复
我是用Database Desktop做的userr.db数据表,放在程序的db文件夹下,程序放在ck文件夹下的aa文件夹下,ck文件夹下有二个文件夹,aa和db,db放着userr.db,aa放着程序,我的路径是
..\db
不用事务,3楼的可以写入数据,用了事务就还是出上面的错误,说是数据库要用本地的数据库,怎么回事啊。
kye_jufei 2010-08-16
  • 打赏
  • 举报
回复
try this:

procedure TForm1.Button1Click(Sender: TObject);
var
Query:TQuery;
begin
Query:=TQuery.Create(nil);
Query.DatabaseName:='Test';
try
database1.StartTransaction;
try
with Query do
begin
close;
sql.Clear;
sql.Add('insert into Logininfo (usernae,pwd) values (:username,:passwords)');
ParamByName('username').asstring:=edit1.Text;
ParamByName('passwords').asstring:=edit2.text;
ExecSql;
end;
database1.Commit;
except
database1.Rollback;
raise;
end;
finally
Query.Free;
end;
end;
goodhj 2010-08-16
  • 打赏
  • 举报
回复
try
if Not Database1.InTransaction then
Database1.StartTransaction; //开始事务控制
Query2.close;
Query2.Sql.clear;
Query2.SQL.Add('insert into userr (usernam,psw) values (:usname,:psww)');
Query2.ParamByName('usname').asstring:=ComboBox1.Text;
Query2.ParamByName('psww').asstring:=pssword;
//psword:= Query1.FieldValues['psw'];
//psw:= form1.UncrypKey(psw,'123456');
//psword.Text:=psw;
Query2.ExecSQL; //开始插入记录
Database1.Commit; //提交事务
except
begin
Query2.Free; //如果出错首先将Query Free掉
Database1.RollBack; //回退事务
raise; //重新引发异常,以通知用户
end;
end;
Query2.free;
阿三 2010-08-16
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
Query2 : TQuery;
begin
Query2 := TQuery.Create(nil);
Query2.DatabaseName := 'db';
try
database1.StartTransaction;
try
with Query2 do
begin
close;
sql.Clear;
sql.Add('insert into userr (usernam,psw) values (:usname,:psww)');
ParamByName('usname').asstring:=edit1.Text;
ParamByName('psww').asstring:=edit2.text;
ExecSql;
end;
database1.Commit;
except
database1.Rollback;
raise;
{*
on e:exception do
begin
Database1.RollBack; //回退事务
showmessage(e.Message);
end;
*}
end;
finally
Query2.Free;
end;
end;

2,507

社区成员

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

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