【发布时间】:2010-06-12 16:04:35
【问题描述】:
最近遇到一个奇怪的问题,代码截图如下:
var
sqlCommand: string;
connection: TADOConnection;
qry: TADOQuery;
begin
connection := TADOConnection.Create(nil);
try
connection.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Test.MDB;Persist Security Info=False';
connection.Open();
qry := TADOQuery.Create(nil);
try
qry.Connection := connection;
qry.SQL.Text := 'Select * from aaa';
qry.Open;
qry.Append;
qry.FieldByName('TestField1').AsString := 'test';
qry.Post;
beep;
finally
qry.Free;
end;
finally
connection.Free;
end;
end;
首先,新建一个名为test.mdb的access数据库,放到这个测试项目的目录下,我们可以在其中新建一个名为aaa的表,其中只有一个文本类型字段TestField1。
我们在“哔”行设置断点,然后在ide调试模式下午餐测试应用程序,当ide停止在断点行时(qry.post已经执行),此时我们使用microsoft access打开测试.mdb打开表aaa你会发现表aaa没有任何变化,如果你让ide在按f9后继续运行你可以发现一个新记录插入到表aaa中,但是如果你按ctrl+f2终止应用程序在断点处,你会发现 aaa 表没有插入记录,但正常情况下,执行 qry.post 后应该向 aaa 表插入一条新记录。 谁能解释一下这个问题,困扰我很久了。谢谢!!!
顺便说一句,ide是delphi 2010,access mdb文件是windows 7下microsoft access 2007创建的
【问题讨论】:
标签: database delphi post transactions