⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lc_bcb_21.txt

📁 c++ builder 的一些txt文档
💻 TXT
字号:

CB实现BLOB字段的读写
BCB实现BLOB字段的读写
[摘自水木清华站]
对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序:
BLOB字段的读取:
TBlobSTream*TemplateStream;
char*TempPlatePtr;
TemplateStream=newTBlobStream((TBlobField*)WebQuery->FieldByName
("SearchTem"),bmReadWrite);
TemplatePtr=newchar[TemplateStream->Size];
TemplateStream->Read(TemplatePtr,TemplateStream->Size);
BLOB字段的写入:
TBlobSTream*TemplateStream;
char*TempPlatePtr;
TemplateStream=newTBlobStream((TBlobField*)WebQuery->FieldByName
("SearchTem"),bmReadWrite);
TemplatePtr=newchar[TemplateStream->Size];
TemplateStream->Write(TemplatePtr,TemplateStream->Size);
________________________________________________________________
补充:
获得字段的大小用函数datalength
SQLServer端要作一点设置:
Bydefault,WRITETEXTisanonloggedoperation.Thismeansthat
textorimagedataisnotloggedwhenitiswrittenintothedatabase.
TouseWRITETEXTinitsdefault,nonloggedstate,
//注意!!
thesystemadministratormustusethesp_dboptionsystemstored
proceduretosetselectinto/bulkcopy,
//
whichallowsnonloggeddatatobeinserted.
做了试验,直接写SQL语句好象不行.
____________________________________________________________________
一些注意事项和一个例子
在写入时:
(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数;
(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数;
使得TTable(TQuery)是可写的.
下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子,
script为一个BLOB字段:
TBlobStream*pScriptStream;
//插入一条记录
strSQL1="insertintocontent(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="selectfile_id,scriptfromcontentwherefile_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=newTBlobStream((TBlobField*)dmStoryEditor->
qryExec->FieldByName("script"),bmReadWrite);
pScriptStream->Write(NewsScript.m_pScript,
NewsScript.m_lScriptRealSize);
dmStoryEditor->qryExec->Post();
dmStoryEditor->qryExec->RequestLive=false;
deletepScriptStream;
}
GlobalUnlock(NewsScript.m_hScript);
UnLockMemories(NewsScript);
返回

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -