无法插入BLOB数据到ORACLE数据库!不懂

Veeve 2003-10-15 05:05:38
TQuery *qry;
...
qry->SQL->Add("select * from TABLE_NAME where KEY_FIELD=\'key_value\'");
qry->RequestLive=true;
qry->Open();
qry->First();
qry->Edit();
TBlobStream *pBS=new TBlobStream((TBlobField*)qry->FieldByName("BLOB_FIELD"),bmWrite);
image->Picture->Graphic->SaveToStream(pBS);
qry->Post();

出错:
ORA-22275:指定LOB定位器无效

搞不懂!!!!!!
...全文
129 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Veeve 2003-10-16
  • 打赏
  • 举报
回复
改用INSERT语句插入后出错:
ORA-01461:仅可以为插入LONG列的LONG值赋值
wyb_45 2003-10-16
  • 打赏
  • 举报
回复
给你一段代码,环境BCB5+ORACLE8i
String file_out="";
String SQL_s =" insert into re_files ";
SQL_s=SQL_s+"(file_name,file_s,file_en,file_size,CRC_STR) ";
SQL_s=SQL_s+"values ";
SQL_s=SQL_s+"(:file_name,:file_s,1,:file_size,:CRC_STR)";
Database1->StartTransaction();
try
{

{
String File_name=Edit1->Text;

if(!FileExists(File_name))
return;

TMemoryStream * s=new TMemoryStream();
s->LoadFromFile(File_name);
s->Seek(0, soFromBeginning);//定位头部
long file_size= s->Size;
{
{
//TMemoryStream* pms_i = new TMemoryStream();//目标文件
//pms_i->CopyFrom(s,file_size);
Query_add->Close();
Query_add->SQL->Clear();
Query_add->SQL->Add(SQL_s);
Query_add->ParamByName("file_name")->AsString=ExtractFileName(File_name);
Query_add->ParamByName("file_size")->AsInteger=file_size;
Query_add->ParamByName("file_s")->LoadFromStream(s,ftBlob);
Query_add->ParamByName("CRC_STR")->AsString="0";
Query_add->ExecSQL();
//delete pms_i;
}
}
delete s;

}
Database1->Commit();

ShowMessage("OK");
}
catch(Exception &e)
{
Database1->Rollback();
ShowMessage("错误 message:"+e.Message);

}
BDE设置 连接注意blob缓冲区大小wyb45@sohu.com
Veeve 2003-10-16
  • 打赏
  • 举报
回复
字段类型改成long raw后问题解决了
奇怪,我装的是oracle8,不支持blob?如果不支持的话那创建怎么会成功?
swites 2003-10-16
  • 打赏
  • 举报
回复
gz
yangqingdelphi 2003-10-16
  • 打赏
  • 举报
回复
数据库级 oracle8或8i以上支持blob.否则用long row.
oracle8之下不支持blob
前台是delphi.用ado联数据库 ms的驱动不支持blob.用oracle提供的驱动.

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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