在Oracle中,Blob字段不能直接写入,需要先写入一个空的记录,然后修改。
代码如下:
// 插入一个新记录
Query->Close();
Query->SQL->Clear();
Query->SQL->Add("INSERT mytable(NO, BLOBFIELD) VALUE(:INDEX, EMPTY_BLOB())");
Query->ParamByName("INDEX")->AsInteger = No;
Query->ExecSQL();
// 修改刚才的记录,写入Blob数据
Query->SQL->Clear();
Query->SQL->Add("UPDATE mytable SET BLOBFIELD=:BLOBDATA WHERE NO=:INDEX");
Query->ParamByName("INDEX")->AsInteger = No;
Query->ParamByName("BLOBDATA")->SetBlobData(Buffer,ByteCount);
Query->ExecSQL();
/ 修改刚才的记录,写入Blob数据
Query->SQL->Clear();
Query->SQL->Add("UPDATE mytable SET BLOBFIELD=:BLOBDATA WHERE NO=:INDEX");
Query->ParamByName("INDEX")->AsInteger = No;
Query->ParamByName("BLOBDATA")->SetBlobData(Buffer,ByteCount);
Query->ExecSQL();
浅妄薄见,望与斟酌
代码如下:
// 插入一个新记录
Query->Close();
Query->SQL->Clear();
Query->SQL->Add("INSERT mytable(NO, BLOBFIELD) VALUE(:INDEX, EMPTY_BLOB())");
Query->ParamByName("INDEX")->AsInteger = No;
Query->ExecSQL();
// 修改刚才的记录,写入Blob数据
Query->SQL->Clear();
Query->SQL->Add("UPDATE mytable SET BLOBFIELD=:BLOBDATA WHERE NO=:INDEX");
Query->ParamByName("INDEX")->AsInteger = No;
Query->ParamByName("BLOBDATA")->SetBlobData(Buffer,ByteCount);
Query->ExecSQL();
/ 修改刚才的记录,写入Blob数据
Query->SQL->Clear();
Query->SQL->Add("UPDATE mytable SET BLOBFIELD=:BLOBDATA WHERE NO=:INDEX");
Query->ParamByName("INDEX")->AsInteger = No;
Query->ParamByName("BLOBDATA")->SetBlobData(Buffer,ByteCount);
Query->ExecSQL();
浅妄薄见,望与斟酌
Query.Close;
Query.SQL.Clear;
Query.SQL.Add('INSERT mytable(No, BlobField) VALUE(:No, BLOB)');
Query.ParamByName('No').AsInteger = No;
Query.ParamByName('Blob').LoadFromFile(FileName);
Query.ExecSQL;