表中有大文本或Image字段,使用TUpdateSQL控件,提交时出错:Update Fail(40分)

  • 主题发起人 主题发起人 hb207
  • 开始时间 开始时间
H

hb207

Unregistered / Unconfirmed
GUEST, unregistred user!
我在表中有varchar(1000)字段或Image字段,使用缓存更新(TUpdateSQL)时出错
Update fail,没有那些字段时没事。如果不使用缓存更新的方式,设置
RequestLive=True,UpdateCache=FLASE也没事。查过大富翁以前的一些问题答案,
没有解决问题,比如设置BLOB SIZE等。请问有没有可行的解决方法?共同探讨,
这问题困扰比较久了。先谢过了!
 
急啊。有经验的高手请出现,多多灌水
 
如果可以换成ADO控件的,不会存在这个问题
 
数据库中Image字段值不能用update,inesrt语句来修改和增加
 
to qianwt:
那只能用Table或单独用Query吗?难道会有这种缺陷?FT
 
大虾快露面,焦急的等待着
 
回去前在提一下,焦急啊
 
我反正都是这样用的,反之用insert, update肯定达不到你要的效果
 
不太满意,可不可能通过修改Database的缓存大小或BDE的一些缓存参数来解决这个问题?
以前好象听高手说过,但不知道具体怎么弄?还是等高手出马吧。怎么就没人关心呢?
 
斑竹快出马啊!!!多谢了
 
>>>>>Database的缓存大小或BDE的一些缓存参数来解决这个问题?
那里保存时有大小限制的时候才改的
 
BDE大字段有大小限制,如何设置?
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1466255
请教高手!
 
注意:在TIBQuery 或 TQuery 中 Blob字段不能用TUpdateSQL更新,但是在TIBTable或
TTable中可以。同时,TImage 字段在表中必须是BLob类型。
 
to zhoufujin:
那大文本字段可以用TUpdateSQL更新吗?难道大字段就不能使用缓存更新?
 
如果大文本字段是Blob类型,就不行,用TIBQuery 是提示不支持Blob缓存更新
的服务器异常。可以将其转换为String类型做为参数,用TStoreProc 或TSQL 去更新。
 
有没有更理想的方法?我用TQuery+TUpdateSQL确实不能更新含有varchar(2000)或
Image类型字段的表(出错Update fail)
 
对于大文档字段,最好使用BlobField字段,采取手工更新的方法
如对于Query可以使用如下方法:
将大文档转换成流格式,然后如下:
ParamByName('Stream').SetBlobData(PChar(AStream.DataString), AStream.Size);
然后执行更新
使用Table控件亦可,但容易将大量无用数据从服务器段传输到本地,如果Filter有效的话,
采用Filter过滤后,对过滤后得到的数据进行更新也能得到同样的效果。
 
要使用流来操作image字段
 
你可以先看看BDE的配置里面的缓存的设置
1.Click the Configuration tab in the left pane.

2.Expand Configuration, expand System under Configuration,
expand INIT under System.

3.Set parameters as follows:

MEMSIZE : 32 (16 original)
SHAREDMEMLOCATION : 0x5BDE (null original)
SHAREDMEMSIZE : 4096 (2048 original)

Right click "INIT" and select "Apply" to save.
 
用TUpdateSQL是不能实现你所要的功能的。
你最好用TADOQuery
 
后退
顶部