数据库查询时出现“insufficient memory for this operation”提示,怎么解决呀,急!(50分)

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

xinyulyg

Unregistered / Unconfirmed
GUEST, unregistred user!
在form中重复执行查询语句时出现上述问题。有关语句如下:
query.active:=false;
query.sql.clear;
query.sql.add('select * from sc where id like = "11%"');
query.execsql;
query.active:=true;
以上语句循环执行十次左右出现
"insufficient memory for this operation"提示内存不足,
但是将query.sql.add('select * from sc where id like = "11%"');
改成query.sql.add('select * from sc');
即不带where 子句时循环一百次也不会出现内存不足的问题。
怎么解决呀,是系统的原因吗?
 
你的语句有问题,但是不是这个原因我不清楚
query.close;
query.sql.clear;
query.sql.add('select * from sc where id like "11%"');//like后不要跟=号
query.Open;//不要用executesql
//query.active:=true;不要这句,重复
最后问一句,你的ID字段什么类型
 
id 字段是字符型,有不有query.active:=true有什么关系呢?
改了也没用呀。
 
呵呵,是sqlserver吧?我也遇到过。
 
你的语句有问题:
尤其是这句:query.sql.add('select * from sc where id like = "11%"');
多了一个= ,用like 就不要用=了,另外将双引号改成两个单引号就好了
还有就是这种能返回结果数据集的查询应该用Open,而不是ExecSQL
改后为下面:
Query.Close;
Query.SQL.Clear ;
query.sql.add('select * from sc where id like ''11%''');
Query.Open;
 
不行啊,改成query.sql.add('select * from where 1=1');
也不行,怎么办啊。
 
你的改为select * from where 1=1中的1是什么?要不就用
select * from where id=1,
 
我是说随便where 后面加什么都会出问题,但不加where则没有问题,怎么回事呢?
 
问题已解决,结案了,散分,执行语句是应该用open的。
 
顶部