Delphi、BCB的TQuery存储极限问题和对标准Sql语句的转化问题

tms2000 2001-08-22 10:46:20
当<select * from tablename>超过140个字段就出错。。。

我有一个文件,xxx.sql,在sql分析器里可以正常执行,文件大概有800多行
Insert into.... 可是以下做的时候就出错:

query.clear;
query.sql.loadformfile('xxx.sql');
query.execute
产生异常在xxx行,其实xxx行没有错误,后来,我把xxx.sql文件分割为小文件,就成功了。。。可是有些时候query在把sql语句提交给服务器以前做了一些东西,往往执行失败,从trace跟踪来的sql,在分析器运行却很正常。。。
745...tmd bde
...全文
85 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tms2000 2001-08-24
  • 打赏
  • 举报
回复
问题自己解决了,原来是quotestr

如果给字段插入字符串 a'b"c

tms2000 2001-08-22
  • 打赏
  • 举报
回复
刺月:
我做实验用的是ms_sql,其实query.sql是Tstrings,因该可以装2G的字符,实际中串在64K是比较安全的。。。有时候70K以上也可以,(因为query在分割的时候,如果没有分割出 残缺的Sql语句),我现在的问题是:Tquery在执行前到底做了那些没有必要的检测。。。

例如:sql语句 insert into tbl(a) values("a's")
在分析器运行可以通过
在query里呢???????
当param 里的数据出现特殊字符呢?
jabmoon 2001-08-22
  • 打赏
  • 举报
回复
请你注意Delphi的字符串长度限制,Query的SQL属性是个字符串,如果超过delphi的字符串长度限制,剩余的部分将被抛弃,这样你的sql语句只剩下一半,当让出错,我在sql server下边遇到过这个问题,你可以做一个试验,把你前边的语句删掉一些或者最好做一些精简,然后在执行,应该会发现出错的行数发生了改变,这是因为被舍弃的字符串的位置发生了改变,很可能你发生错误的那句sql语句完全正常了,而其后的语句会提示你错误。
我想应该是这个问题,因为你说分割后正常,合并后出错,请仔细检查字符串长度。
tms2000 2001-08-22
  • 打赏
  • 举报
回复
没有人仔细研究过bde单元的dbi 函数吗?


5,927

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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