• 全部
  • 语言基础/算法/系统设计
  • 数据库相关
  • 图形处理/多媒体
  • 网络通信/分布式开发
  • VCL组件开发及应用
  • Windows SDK/API
  • 问答

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
...全文
56 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
看到党国的份上。。。给个回答。。。。


这个问题说明了 : delphi在数据库开发方面还不够专业。。。。哎。。。。
回复
tms2000 2001-08-22
没有人仔细研究过bde单元的dbi 函数吗?


回复
相关推荐
综教楼后的那个坑用双向链表实现 描述   在 LIT 综教楼后有一个深坑,关于这个坑的来历,有很多种不同的说法。其中一种说法是,在很多年以前,这个坑就已经在那里了。这种说法也被大多数人认可,这是因为该坑有一种特别的结构,想要人工建造是有相当困难的。   从横截面图来看,坑底成阶梯状,由从左至右的 1..N 个的平面构成(其中 1 ≤ N ≤ 100,000),如图:    *            * :    *            * :    *            * 8    *    **      * 7    *    **      * 6    *    **      * 5    *    ********* 4 <- 高度    *    ********* 3    ************** 2    ************** 1 平面 |  1  |2|   3    | 每个平面 i 可以用两个数字来描述,即它的宽度 Wi 和高度 Hi,其中 1 ≤ Wi ≤ 1,000、1 ≤ Hi ≤ 1,000,000,而这个坑最特别的地方在于坑底每个平面的高度都是不同的。每到夏天,雨水会把坑填满,而在其它的季节,则需要通过人工灌水的方式把坑填满。灌水点设在坑底位置最低的那个平面,每分钟灌水量为一个单位(即高度和宽度均为 1)。随着水位的增长,水自然会向其它平面扩散,当水将某平面覆盖且水高达到一个单位时,就认为该平面被水覆盖了。   请你计算每个平面被水覆盖的时间。    灌水 水满后自动扩散 | | * | * * | * * * * V * * V * * * * * * .... * *~~~~~~~~~~~~* * ** * *~~~~** : * *~~~~**~~~~~~* * ** * *~~~~** : * *~~~~**~~~~~~* * ** * *~~~~**~~~~~~* *~~~~**~~~~~~* * ********* *~~~~********* *~~~~********* *~~~~********* *~~~~********* *~~~~********* ************** ************** ************** ************** ************** **************    4 分钟后    26 分钟后        50 分钟后    平面 1 被水覆盖     平面 3 被水覆盖    平面 2 被水覆盖输入   输入的第一行是一个整数 N,表示平面的数量。从第二行开始的 N 行上分别有两个整数,分别表示平面的宽度和高度。 输出   输出每个平面被水覆盖的时间。
发帖
Delphi
创建于2007-08-02

4890

社区成员

Delphi 开发及应用
申请成为版主
帖子事件
创建了帖子
2001-08-22 10:46
社区公告
暂无公告