为何出现“List Index out of bounds(1)”异常?

qqfqqf 2004-10-16 01:22:55
代码如下:
AnsiString strSQL="Select * From sms where card=:iCardId";
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(strSQL);
ADOQuery1->Parameters->Items[1]->Value=iCard;//此句引起异常,为何?
ADOQuery1->Open();
Parameters中的Precision为何无法设置大于255呢?我的数据大于255,怎么办?
...全文
811 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hailin10 2004-10-18
  • 打赏
  • 举报
回复
ADOQuery1->ParamByName("参数名")->AsString
CACACACACA 2004-10-18
  • 打赏
  • 举报
回复
ADOQuery1->Parameters->Items[1]->Value.Val试试.
以前我也遇到过,好像可以这么写.楼主试试.
3996906 2004-10-18
  • 打赏
  • 举报
回复
这样来就不出错了
AnsiString strSQL="Select * From sms where card=:@iCardId";

ADOQuery->Parameters->ParamValues["@iCardId"] = iCard;

ADO是强大,但thinking in c++里说最好对你认为理所当然的东西+个判断
laisf 2004-10-18
  • 打赏
  • 举报
回复
改成 ADOQuery1->ParamByName("参数名")->AsString
pcclever 2004-10-16
  • 打赏
  • 举报
回复
Items[1]它是从0开始算的,你只有一个参数,所以要改为items[0]。
pcclever 2004-10-16
  • 打赏
  • 举报
回复
在这个例子里你只有一个参数,所以用items[1]就是错的。

如果有三个参数,那么除非是有特殊的情况,不然楼主最好还是用参数名比较好,尤其是参数多的时候。
qqfqqf 2004-10-16
  • 打赏
  • 举报
回复
我定义了三个参数,全部是整数型的,第一个参数没有问题,问题出现在后面两个参数上,不知
为何?
cchao 2004-10-16
  • 打赏
  • 举报
回复
应该是访问了未定义的数组空间
zxq520zf 2004-10-16
  • 打赏
  • 举报
回复
学习+顶
dmate 2004-10-16
  • 打赏
  • 举报
回复
TParameter::Precision
Specifies the number of digits allowed for a numeric parameter.
不会不够吧
huabihan 2004-10-16
  • 打赏
  • 举报
回复
感觉对有item的操作事先最好都要判断一下~!
hongwuzhao 2004-10-16
  • 打赏
  • 举报
回复
1、异常原因:同意 pcclever(质子) 。在C中怎么能忘记从 0 开始计算你。(AnsiString 例外)

2、Precision 为BYTE范围0-255。Precision是参数的位数(包括符号位),不是数值的大小

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧