怎样处理 "Invalid Blob Length" - 急

时间:2023-02-07 18:34:36
我在往SQL SERVER中存取Image类型的数据时,使用了以下代码:

    Table1->Insert();
    TBlobField *pictureField = (TBlobField *)Table1->FieldByName("picture");
    pictureField->LoadFromFile("123.txt");
    Table1->Post();

在文件123.txt小于32k时,这段代码没问题。但当123.txt大于32k,并执行到Table1->Post()时,C++ Builder会报"Invalid Blob Length"的错。

请问高手这个问题是怎么引起的,怎样解决。

5 个解决方案

#1


这个问题,我以前也碰过,不知你用的什么数据引擎,BDE?ADO?ODBC?
  BDE肯定是有问题的,BDE有个参数BLOB SIZE它缺省为32K,大于32K是不能存入数据库的,改这个参数的值也不能完全解决问题(有个老外,他将此值改为-1,我没在SQLSERVER下试过,不过oracle肯定是不行的)
  所以,建议你用ADO来连sqlserver,并将ado升到2.7版以上(现在应该是2.8版了),应该可以解决

#2


Thanks, keiy.
再请教两个问题。
BDE上的参数怎么修改?
要升级ADO,怎么升?

#3


到网上DOWNLOAD MADC2.8

#4


1.BDE上的参数怎么修改?
   如果你是用BDE已建好别名,在bde administrator 中直接点别名
   改BLOB SIZE
   如果你是动态建的别名在bde administrator中
  Configuration->Drivers->Native->MSSQL
   改BLOB SIZE
2.要升级ADO,怎么升?

http://www.microsoft.com/downloads/details.aspx?FamilyID=6c050fe3-c795-4b7d-b037-185d0506396c&DisplayLang=zh-cn
下载mdac2.8,安装就可以了

#5


MARK一个

#1


这个问题,我以前也碰过,不知你用的什么数据引擎,BDE?ADO?ODBC?
  BDE肯定是有问题的,BDE有个参数BLOB SIZE它缺省为32K,大于32K是不能存入数据库的,改这个参数的值也不能完全解决问题(有个老外,他将此值改为-1,我没在SQLSERVER下试过,不过oracle肯定是不行的)
  所以,建议你用ADO来连sqlserver,并将ado升到2.7版以上(现在应该是2.8版了),应该可以解决

#2


Thanks, keiy.
再请教两个问题。
BDE上的参数怎么修改?
要升级ADO,怎么升?

#3


到网上DOWNLOAD MADC2.8

#4


1.BDE上的参数怎么修改?
   如果你是用BDE已建好别名,在bde administrator 中直接点别名
   改BLOB SIZE
   如果你是动态建的别名在bde administrator中
  Configuration->Drivers->Native->MSSQL
   改BLOB SIZE
2.要升级ADO,怎么升?

http://www.microsoft.com/downloads/details.aspx?FamilyID=6c050fe3-c795-4b7d-b037-185d0506396c&DisplayLang=zh-cn
下载mdac2.8,安装就可以了

#5


MARK一个