兄弟们,帮帮忙!关于怎么样添加二进制到sql server中的问题!
首先说一下我的表结构:
表名:mytable
表的字段:
mydate datetime
mytime datetime
mydata image
以下是我操作表的代码:
1。保存的:
String sql;
char *p;
TMemoryStream *ms = new(TMemoryStream);
p=new BYTE[257];
ms->WriteBuffer(p,256);
ShowMessage(IntToStr(ms->Position));
sql="Insert into mytable values(:pdate,:ptime,:pdata)";
Dm->AQ_Cpp->Close();
Dm->AQ_Cpp->SQL->Clear();
Dm->AQ_Cpp->SQL->Text=sql;
Dm->AQ_Cpp->Parameters->ParamByName("pdate")->DataType=ftDate;
Dm->AQ_Cpp->Parameters->ParamByName("pdate")->Value=Date();
Dm->AQ_Cpp->Parameters->ParamByName("ptime")->DataType=ftTime;
Dm->AQ_Cpp->Parameters->ParamByName("ptime")->Value=Time();
Dm->AQ_Cpp->Parameters->ParamByName("pdata")->LoadFromStream(ms,ftBlob);
Dm->AQ_Cpp->ExecSQL();
delete p;
delete ms;
以下是读取的:
Dm->AQ_Cpp->Close();
Dm->AQ_Cpp->SQL->Clear();
Dm->AQ_Cpp->SQL->Text="select * from mytable";
Dm->AQ_Cpp->Open();
TMemoryStream *ms = new(TMemoryStream);
TBlobField *pbf;
char *p;
p=new BYTE[257];
ms->Clear();
pbf=(TBlobField*)Dm->AQ_Cpp->Fields->FieldByName("mydata");
pbf->SaveToStream(ms);
ms->ReadBuffer(p,256);//在这里就出错了。错误信息是:Stream read error!
for (int i=0;i<256;i++)
{
ShowMessage(IntToStr((int)p[i]));
}
delete ms;
delete p;
请大家帮我看看,为什么在读取时出错了,谢谢大家!