BCB实现BLOB字段的读写
当前位置:以往代写 > C/C++ 教程 >BCB实现BLOB字段的读写
2019-06-13

BCB实现BLOB字段的读写

BCB实现BLOB字段的读写

副标题#e#

对付SQL中的TEXT、IMAGE、MEMO字段的存取,可以回收下列措施:

BLOB字段的读取:

TBlobSTream* TemplateStream;
char* TempPlatePtr;      
TemplateStream=new TBlobStream((TBlobField*)WebQuery->FieldByName
("SearchTem"),bmReadWrite);
TemplatePtr= new char[TemplateStream->Size];
TemplateStream->Read(TemplatePtr, TemplateStream->Size);
BLOB字段的写入:
TBlobSTream* TemplateStream;
char* TempPlatePtr;      
TemplateStream=new TBlobStream((TBlobField*)WebQuery->FieldByName
("SearchTem"),bmReadWrite);
TemplatePtr= new char[TemplateStream->Size];
TemplateStream->Write(TemplatePtr, TemplateStream->Size);

________________________________________________________________

增补:

得到字段的巨细用函数datalength

SQL Server端要作一点配置:

By default, WRITETEXT is a nonlogged operation. This means that

text or image data is not logged when it is written into the database.

To use WRITETEXT in its default, nonlogged state,

//留意!!

the system administrator must use the sp_dboption system stored

procedure to set select into/bulkcopy,

//

which allows nonlogged data to be inserted.

做了试验,直接写SQL语句好象不可.

____________________________________________________________________


#p#副标题#e#

一些留意事项和一个例子

在写入时:

(1)假如利用的是TTable,则要将其ReadOnly属性先置为false,然后挪用Edit函数;

(2)假如利用的是TQuery,则要将其RequestLive属性先置为true,然后挪用Edit函数;

使得TTable(TQuery)是可写的.

下面是一个利用TQuery往content表(主键file_id)中插入一笔记录的例子,

script为一个BLOB字段:

TBlobStream *pScriptStream;
//插入一笔记录
strSQL1="insert into content(file_id,script,key_image) values('";
strSQL1=strSQL1+m_szFileID+"',null,null)";
dmStoryEditor->qryExec->SQL->Clear();
dmStoryEditor->qryExec->SQL->Add(strSQL1);
dmStoryEditor->qryExec->ExecSQL();
dmStoryEditor->qryExec->Close();
//整理要写入的Blob数据 
LockMemories(NewsScript);
NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum);
NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript);
if(NewsScript.m_pScript!=NULL)
{
//再将刚插入的记录读出来,使该Query与该笔记录关联
strSQL1="select file_id,script from content where file_id='"+
m_szFileID+"'";
//答允该Query写
dmStoryEditor->qryExec->RequestLive=true;
dmStoryEditor->qryExec->SQL->Clear();
dmStoryEditor->qryExec->SQL->Add(strSQL1);
dmStoryEditor->qryExec->Open();
dmStoryEditor->qryExec->First();
//将该Query置为可写
dmStoryEditor->qryExec->Edit();
pScriptStream=new TBlobStream((TBlobField*)dmStoryEditor->
qryExec->FieldByName("script"),bmReadWrite);
pScriptStream->Write(NewsScript.m_pScript,
NewsScript.m_lScriptRealSize);
dmStoryEditor->qryExec->Post();
dmStoryEditor->qryExec->RequestLive=false;
delete pScriptStream;
}
GlobalUnlock(NewsScript.m_hScript);
UnLockMemories(NewsScript);

    关键字:

在线提交作业