请教一个ADOQuery的ParamByName参数传值的问题!(在线等候,请大家帮忙指教)(100分)

  • 主题发起人 主题发起人 2you2me
  • 开始时间 开始时间
2

2you2me

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序以前编译后一直正常运行,后来在另外的一台机器上重新编译过后,运行时报错,而且报错好像是因为内存地址的错误。经我仔细查看,重新编译过的程序在出现类似 ADOQuery->Paramters->ParamByName("ID")->Value = sValue;
这样的语句的时候出错(程序代码没有任何问题,因为这个程序已经正常运定了很久了,现在只是重新编译了一下,且编译正确通过。),也就时用到ParamByName的时候都可能出错。但是如果我不用ParamByName传递参数,直接把参数变量写入sql字符串如:select * from mytable where id='"+sValue+"'";这样的语句处理的时候,完全正确。请教大家,这是怎么回事?
 
Query1.ParamByName('name').AsString := '张';
Query1.ParamByName('age').AsSmallInt := 6565;
 
ADOQuery里语句应是这样写的:
select * from mytable where id=:sValue
传参数时
ADOQuery->Paramters->ParamByName("sValue")->Value = '12345'
 
谢谢两位的回答。
以上二位的回答都是正确的,其中Siva是BDE中的写法。szkok的是ADO的写法,跟我写得一样。
我现在的问题是,我的程序语法都没有问题,但是为什么通过不同的编译环境(分别在两台机器上)编译出来的程序运行时,一个报错,一个不报错?
 
把编译的路径看看~可能编译时调用库的路径错误~
 
连接字符串是否正确的找到了数据库文件?
参数的类型与数据库中的字段类型是否匹配?
ADOQuery.Paramters.ParamByName('ID').Value = sValue;//是单引号不是双引号
 
还是用sql查询啦,这样才不会出问题哦。
 
我想不是参数问题,是不是你在编译前不小心把
database.connected打开了?
 
有没有试过在你说不行的机器上做其他程序单独试验?看看这样做法是否正常?看看是否这台机器的C++ Builder问题。
 
出现的错误是什么?可以说下吗?
 
后退
顶部