300现大洋,SQL语句的问题(300分)

  • 主题发起人 主题发起人 herald
  • 开始时间 开始时间
H

herald

Unregistered / Unconfirmed
GUEST, unregistred user!
600现大洋,SQL语句的问题

一个数据库“拼音表”包含一个字符串类型的字段“拼音”
我写了一个ADO/delphi程序来查询它,无论使用tadodataset
或者tadoquary执行sql语句
select 拼音, 地址, 字母, 差值 from 拼音表 where 拼音="wei"
运行的时候就出错:
[microsoft][ODBC microsoft access driver] 参数不足,期待是1
把所有字段名字和表名字改成E文,还是这样的错误,如
select py, address, letter, sub from pyb where py="wei"

但是把where后的字段名改成数字类型就可以,比如
select 拼音, 地址, 字母, 差值 from 拼音表 where 差值>=1

为什么,我哪里伺候ODBC不周到?
 
应该是单引号吧'wei',呵呵
ODBC说了"不高兴"[:D][:D]
 
Daoquery2.SQL.SetText('select * from haomadata where status=:a');
Daoquery2.Params[0].Asstring :='卖出';
DaoQuery2.Open;
这样用一下。
 
如果是ADO,很可能是where 拼音="wei"应该为
where 拼音=''wei'';//双引用两个单引替代.


 
双引号是有特殊用途的。[:D]
 
不能用双引号,要用两个单引号来代替一个双引号,就像这样where aa=''aa''
 
select 拼音, 地址, 字母, 差值 from 拼音表 where 拼音='wei'
 
这分好赚!
若你知道是哪个值,请用
strSQL:='select py, address, letter, sub from pyb where py=''wei'';
若你是变量:
strSQL:='select py, address, letter, sub from pyb where py='+''''youdata'''';
另外,你可以用参数:
Qry.Active:=False;
Qry.SQL.clear;
QRy.SQL.Text:='select py, address, letter, sub from pyb where py:=TheData';
Qry.Params[0].AsString:='Wei';
Qry.Active:=True;
哈哈,给分!
 
where 后面的参数应该 用单引号的'',而不是"".[8D]
 
你在access中调试一下你的sql
如果行,就检查你的代码,
如果是常量
sqlstring := 'select py, address, letter, sub from pyb where py="wei"';
是变量
sqlstring := 'select py, address, letter, sub from pyb where py="'+wei+'"';
 
生成SQL语句要用单引号
在delphi中按pascal语法两个单引号表示一个实际的单引号
 
生成SQL语句要用单引号
 
谢谢各位,现大洋已经分配
 
后退
顶部