数据库问题 关于Query(0分)

  • 主题发起人 主题发起人 muyixin
  • 开始时间 开始时间
M

muyixin

Unregistered / Unconfirmed
GUEST, unregistred user!
用ADOQuery 做记录的添加 删除 修改记录 最后要用excelSQL方法 而不能用open 书上也有说明这两者的区别
可如果我 用下面的代码向数据库插入一条记录后 显示数据库记录的Grid就什么都不显示了( DBGrid的datasource属性为datasoure1 datasoure1的dataset属性为ADOQuery )
但如果是用select 等查询语句 数据表还一直显示记录内容
有什么办法让数据库通query添加数据后 数据表还在显示呢?
with ADOQuery1 do
begin
Close;
SQL.Clear;
S:='Insert Into Information(name,Age) Values('+'"'+edtName.Text+'"'+','+'"'+edtAge.Text+'"'+')';
SQL.Add(S);
Prepared:=True;
ExecSQL;
end;
 
插入之后query需要重新连接
后面加上以下语句,试试:
with ADOQuery1 do
begin
Close;
SQL.Clear;
S:='select * from Information;
SQL.Add(S);
open;
end;
 
ExecSQL 用这个是不返回结果集的..
用OPEN 就行...OPEN 是返回结果集的.
jsjwyy,写的代码 OK
 
谢谢两位的帮助 我式过了 可以的 但式出现一个新问题 就式 我 每执行一次SQL语句 就得先把QUERY给关闭了 执行语句后 才能打开 这样 我的DBGrid 总式一闪一闪的 能不能有所改进呢?
另外我发现如果在程序中打开了数据库 要在适当的时候把它给关闭了 比如在窗体关闭的事件里 如果不关闭的话 你的窗体虽然关闭了 但数据库还是一直开着的(还占内存)
这是我刚开始时 没有写关闭数据库的代码 把窗体关闭后 想修改这个文件夹的名字 却修改不了 找原因发现的 刚开始学习 问题多多啊
 
试试下面的行不行
try
Dbgrid.disablecontrol;
Adoquery.requery;
finally
Dbgrid.enablecontrol;
end;
 
你是单表操作,完全可以不用sql语句实现保存,删除,修改操作.你开始先用select语句把表里的数据显示出来,也就是把数据集open,然后保存就可以这样:
AdoQuery1.insert(新增)/Adoquery2.Edit(修改)
Adoquery1.fieldByName('Name'):=edtName.text;
Adoquery1.fieldByName('Age'):=edtAge.text;
Adoquery1.post;
因为Adoquery1.post自己会刷新数据集的,不用再执行select语句了.
 
ds1520 和macwong
哪我想问一下 什么情况下用sql语句比较好呢
还有 我用select 可一选择access数据库中的表 如果不用select的话 哪我怎么知道我操作的时哪个表呢 在ADOtable里在连接数据库或 有TableName这个属性可以选择操作的表 但adoquery却每有这个属性 该怎么办呢?
 
仔细看我的帖子,我都给你解释了
insert,update,delete三种操作的前提是把数据集open
也就是先Adoquery1.sql.Clear;
AdoQuery1.Sql.add('select * from 表');
AdoQuery1.Open;
下面就可以接着我上面的帖子写了.
 
还有AdoTable只能单表操作,所以它有TableName这个属性.
 
啊 不好意思 是我每有看仔细 谢谢 各位大侠的帮助
 
接受答案了.
 
后退
顶部