ADO连接SQL SEREVR 的查询问题?(50分)

  • 主题发起人 主题发起人 xiays
  • 开始时间 开始时间
X

xiays

Unregistered / Unconfirmed
GUEST, unregistred user!
我在单机的SQL SERVER7做数据库用DELPHI6的ADO连接数据库时,查询SQL SERVER表中的字符型数据时出错。错误方式是该字符字段处录入11、22等数字型数据时查询正常,录入aa、bb等字符型数据后查询时不好用以下为查询代码
adoquery1.sql.clear;
adoquery1.sql.add('select * from d_xs where xh="a"')
adoquery1.open;
如果把a换成为数字11查询就可以通过



 
你的字符型是如何定义的,是nvarchar,还是nchar,还是char
你可能用的不是nvarchar,换上这个一类型试试
 
什么错误信息?
估计是数据库问题。
 
adoquery1.sql.add('select * from d_xs where xh="a"')
你的XH字段是数值类型的。你输入了11,其实它进行了一次强制类型转换,将"11"转换成11,而没有出错。
但是你输入了"aa",它没办法转换了,就蹦叉了。
去掉那个双引号!
 
还有,即使是字符型的字段,尽量使用单引号而不是双引号,在SQL Server和Oracle下尤其是这样。
如果你的XH是字符类型的,那么最好这么写
adoquery1.sql.add('select * from d_xs where xh=''a''') ;

当然,本题你需要这么写:
adoquery1.sql.add('select * from d_xs where xh=11') ;

 
就是就是,yzhshi说的很好.你在仔细查查.
 
问题应该是出在双引号上
 
我的XH定义为CHAR型
 
Char类型?
使用adoquery1.sql.add('select * from d_xs where xh=''a''') ;如何?
 
adoquery1.sql.clear;
adoquery1.sql.text:='select * from d_xs where xh='''+a+'''';
adoquery1.open;
 
谢谢正如YZHSHI所说是双引号的问题
 

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
后退
顶部