当我用下面这段代码,调用的是本地数据库时,运行后能实现查询功能。
procedure TQprecForm.Button1Click(Sender: TObject);
begin
With Query1 Do
begin
close;
SQL.clear;
SQL.Add('SELECT NUM,PNAME,PAGE FROM MP');
SQL.Add('WHERE PNAME=:Name');
ParamByName('Name').AsString:=NameEdit.Text;
if not Prepared then
Prepare;
Open;
end;
end;
但当我调用服务器上的Oracle数据库中的表时,运行成功但是输入与库表相匹配的数据后,DBGrid上显示的数据却都是空值。
而当我用
With Query1 Do
begin
close;
SQL.clear;
SQL.Add('SELECT NUM,PNAME,Page FROM MP');
SQL.Add('WHERE PName='+''''+NameEdit.Text+'''');
Open;
end;
这段代码时,输入同样的查询值,在DBGrid就能显示出数据。
问题是不是出在调用远程数据库上?
那在调用远程数据库时,带参数的SQL应该怎么写?
请大家帮忙!!谢谢!!
procedure TQprecForm.Button1Click(Sender: TObject);
begin
With Query1 Do
begin
close;
SQL.clear;
SQL.Add('SELECT NUM,PNAME,PAGE FROM MP');
SQL.Add('WHERE PNAME=:Name');
ParamByName('Name').AsString:=NameEdit.Text;
if not Prepared then
Prepare;
Open;
end;
end;
但当我调用服务器上的Oracle数据库中的表时,运行成功但是输入与库表相匹配的数据后,DBGrid上显示的数据却都是空值。
而当我用
With Query1 Do
begin
close;
SQL.clear;
SQL.Add('SELECT NUM,PNAME,Page FROM MP');
SQL.Add('WHERE PName='+''''+NameEdit.Text+'''');
Open;
end;
这段代码时,输入同样的查询值,在DBGrid就能显示出数据。
问题是不是出在调用远程数据库上?
那在调用远程数据库时,带参数的SQL应该怎么写?
请大家帮忙!!谢谢!!
解决方案 »
- DBctrlgrid的问题
- sql语句怎样学啊
- 讨论:perform(),sendmessage(),postmessage()区别
- 如何隐藏命令按钮???
- 关于Delphi调试时的一个问题,关于ADO的一个问题
- 能否写代码在指定的tedit控件中或memo控件的指定位置加入字符串
- 我打算用delphi写一个游戏“华容道”,请高手给点建议!
- 用goto语句如何调用另外一个过程中的标签?急!急!急!
- 关于修改数据库中内容的问题
- 高分求解 ,关于联合查询的问题
- 急急急!!今天晚上就要打包了。怎么在installshield里定义一个可以让用户选择安装路径的窗口?
- 用sql查询时,如何设置与时间有关的条件语句?
请指教!
如果是SQLServer还可以是使用事件探查器,Oracle不知道用什么东东
begin
With Query1 Do
begin
close;
SQL.clear;
SQL.Add('SELECT NUM,PNAME,PAGE FROM MP');
SQL.Add('WHERE PNAME='':Name''');//试一下这样
ParamByName('Name').AsString:=NameEdit.Text;
//或者你可以将这句改为 ParamByName('Name').AsString:=QuoteStr(NameEdit.Text);
if not Prepared then
Prepare;
Open;
end;
end;
不是。那在调用远程数据库时,带参数的SQL应该怎么写?
With Query1 Do
begin
close;
SQL.clear;
SQL.Add('SELECT NUM,PNAME,PAGE FROM MP');
SQL.Add('WHERE PNAME=:Name');
ParamByName('Name').AsString:=QuoteStr(NameEdit.Text);
//或者ParamByName('Name').AsString:=''''+NameEdit.Text+'''';
if not Prepared then
Prepare;
Open;
end;
'WHERE PNAME=:Name' 这句表示 当 PNAME 等于 :Name 时。
而'WHERE PName='+''''+NameEdit.Text+'''' 也可以写成 'WHERE PName='''+NameEdit.Text+'''' 表示 当 PName 等于 一个字符串 时(这个字符串的内容为NameEdit.Text),我在编程中也遇到类似的问题,后来就这样解决了。