有关SQL的小问题(30分)

  • 主题发起人 主题发起人 delphilike
  • 开始时间 开始时间
D

delphilike

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一个已经有table控件的程序里加入了一个query控件,设置它的SQL语句
使用ExecSql语句执行它,但是没有什么反应,后来我又用动态生成的方法,
程序如下,但是还是不能执行sql语句,不知道是为什么?
var tq:TQuery;
begin
tq:=TQuery.Create(Application);
tq.DataBaseName:='MYDB';
with tq do
begin
close;
SQL.clear;
SqL.Add('SELECT 显正价元素, 化学式');
Sql.Add('FROM "SEA.db" Sea');
Sql.Add('ORDER BY 显正价元素, 化学式');
ExecSql;
Open;
Close;
Free;
end;
end;
 
1、去掉 ExecSql;
2、为什么要
Close;
Free;
????
你把查询得到的数据保存了吗?
 
execsql改成open
 
execsql-->Active:=True;
Active:=True应该包含了open了吧。
close掉了,还会有结果反映出来吗?
去掉close吧!
 
C++Bulider中
Open和Active=true的方法只能用于有查询结果的SQL语句
ExecSql可以用于不带查询结果的SQL语句。
最好的方法可以使用
try{
}
catch()
{
}
访问查询结果后,才能使用Free的方法将其释放。
 
是不执行还是没有结果,如果不执行,是否有数据连接失败的提示(通常远程数据库经常莫明奇妙的连接不上);如果是数据库中有值但却显示为空,那么,就是
CLOSE;
FREE;
应该去掉,而上面两句最好用OPEN;
你在写SQL 语句时最好先在SQL EXPLORER试着执行.
在BDE中建数据连接不用我说吧!嘿嘿!
 
面条的观点对!

一般执行SQL语句时
若为SELECT,一般用OPEN!
若为UPDATE、INSERT、DELETE、create tabel时
用ExecSQL。(看Delphi帮助)
且一般要拦截可能出现的错误
通用结构:
with Query do
begin
sql.close;
sql.clear;
sql.add(SQL语句);
try
open;//或ExecSQL;
except
showmessage('Query执行错误!');
end;//end of try
end;

另:注意在执行ExecSQL(insert,updata,delete,create tabel时)
语句时QUERY的RequestLive属性要设为TRUE!!!
 
你多加了一个
ExecSql;
去了,只用一个Open;
 
完全同意lmtree的观点.
 
with tq do
begin
close;
SQL.clear;
SqL.Add('SELECT 显正价元素, 化学式');
Sql.Add('FROM "SEA.db" Sea');
Sql.Add('ORDER BY 显正价元素, 化学式');
Open;
end;
 
改成下面的吧
var tq:TQuery;
begin
tq:=TQuery.Create(Application);
tq.close;
tq.DataBaseName:='MYDB';
with tq do
begin
SQL.clear;
SqL.Add('SELECT 显正价元素, 化学式');
Sql.Add('FROM "SEA.db" Sea');
Sql.Add('ORDER BY 显正价元素, 化学式');
Open;
end;
.....{操作完后再关掉,最后释放}
tq.close;
tq.Free;

end;
 
在执行SQL语句时若有返回数据集合的(比如Select语句),则调用用Open方法;
若没有返回数据集合的(比如UPDATE、INSERT、DELETE语句),则调用用ExecSQL方法;
且调用时最好设置错误陷阱,
如:
try
open;//或ExecSQL;
except
showmessage('连接数据失败!');
end;//end of try
去掉Free方法,完全没必要。
 
接受答案了.
 
sql语句中,若要返回查询结果,用SQL.OPEN
若执不需要返回执行结果,用SQL.EXECSQL
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
746
SUNSTONE的Delphi笔记
S
后退
顶部