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

📄 lc_bcb_21.html

📁 C++Builder教学大全
💻 HTML
字号:
<html>



<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">



<title>CB实现BLOB字段的读写</title>

</head>



<body>



<p align="center"><big>BCB实现BLOB字段的读写</big>&nbsp;<font color="#0000FF"><br>

</font>

</p>



<p><br>

&nbsp;对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序:&nbsp;<br>

BLOB字段的读取:&nbsp;<br>

&nbsp;TBlobSTream*&nbsp;TemplateStream;&nbsp;<br>

&nbsp;char*&nbsp;TempPlatePtr;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>

&nbsp;<br>

&nbsp;TemplateStream=new&nbsp;&nbsp;&nbsp;TBlobStream((TBlobField*)WebQuery-&gt;FieldByName&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&quot;SearchTem&quot;),bmReadWrite);&nbsp;<br>

&nbsp;TemplatePtr=&nbsp;new&nbsp;char[TemplateStream-&gt;Size];&nbsp;<br>

&nbsp;TemplateStream-&gt;Read(TemplatePtr,&nbsp;TemplateStream-&gt;Size);&nbsp;<br>

&nbsp;<br>

BLOB字段的写入:&nbsp;<br>

&nbsp;TBlobSTream*&nbsp;TemplateStream;&nbsp;<br>

&nbsp;char*&nbsp;TempPlatePtr;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>

&nbsp;<br>

&nbsp;TemplateStream=new&nbsp;&nbsp;&nbsp;TBlobStream((TBlobField*)WebQuery-&gt;FieldByName&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&quot;SearchTem&quot;),bmReadWrite);&nbsp;<br>

&nbsp;TemplatePtr=&nbsp;new&nbsp;char[TemplateStream-&gt;Size];&nbsp;<br>

&nbsp;TemplateStream-&gt;Write(TemplatePtr,&nbsp;TemplateStream-&gt;Size);&nbsp;<br>

&nbsp;<br>

________________________________________________________________&nbsp;<br>

补充:&nbsp;<br>

获得字段的大小用函数datalength&nbsp;<br>

&nbsp;<br>

SQL&nbsp;Server端要作一点设置:&nbsp;<br>

By&nbsp;default,&nbsp;WRITETEXT&nbsp;is&nbsp;a&nbsp;nonlogged&nbsp;operation.&nbsp;This&nbsp;means&nbsp;that&nbsp;&nbsp;<br>

text&nbsp;or&nbsp;image&nbsp;data&nbsp;is&nbsp;not&nbsp;logged&nbsp;when&nbsp;it&nbsp;is&nbsp;written&nbsp;into&nbsp;the&nbsp;database.&nbsp;&nbsp;<br>

To&nbsp;use&nbsp;WRITETEXT&nbsp;in&nbsp;its&nbsp;default,&nbsp;nonlogged&nbsp;state,&nbsp;&nbsp;<br>

//注意!!&nbsp;<br>

the&nbsp;system&nbsp;administrator&nbsp;must&nbsp;use&nbsp;the&nbsp;sp_dboption&nbsp;system&nbsp;stored&nbsp;&nbsp;<br>

procedure&nbsp;to&nbsp;set&nbsp;select&nbsp;into/bulkcopy,&nbsp;&nbsp;<br>

//&nbsp;<br>

which&nbsp;allows&nbsp;nonlogged&nbsp;data&nbsp;to&nbsp;be&nbsp;inserted.&nbsp;<br>

&nbsp;<br>

做了试验,直接写SQL语句好象不行.&nbsp;<br>

____________________________________________________________________&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一些注意事项和一个例子&nbsp;<br>

在写入时:&nbsp;<br>

(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数;&nbsp;<br>

(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数;&nbsp;<br>

使得TTable(TQuery)是可写的.&nbsp;<br>

&nbsp;<br>

下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子,&nbsp;<br>

script为一个BLOB字段:&nbsp;<br>

&nbsp;&nbsp;&nbsp;TBlobStream&nbsp;*pScriptStream;&nbsp;<br>

&nbsp;&nbsp;//插入一条记录&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strSQL1=&quot;insert&nbsp;&nbsp;into&nbsp;&nbsp;content(file_id,script,key_image)&nbsp;values('&quot;;&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strSQL1=strSQL1+m_szFileID+&quot;',null,null)&quot;;&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dmStoryEditor-&gt;qryExec-&gt;SQL-&gt;Clear();&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dmStoryEditor-&gt;qryExec-&gt;SQL-&gt;Add(strSQL1);&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dmStoryEditor-&gt;qryExec-&gt;ExecSQL();&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dmStoryEditor-&gt;qryExec-&gt;Close();&nbsp;<br>

&nbsp;&nbsp;//整理要写入的Blob数据&nbsp;&nbsp;&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LockMemories(NewsScript);&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum);&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NewsScript.m_pScript=(BYTE&nbsp;*)GlobalLock(NewsScript.m_hScript);&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(NewsScript.m_pScript!=NULL)&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br>

&nbsp;&nbsp;&nbsp;//再将刚插入的记录读出来,使该Query与该条记录关联&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strSQL1=&quot;select&nbsp;&nbsp;file_id,script&nbsp;&nbsp;from&nbsp;&nbsp;content&nbsp;&nbsp;where&nbsp;&nbsp;file_id='&quot;+&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_szFileID+&quot;'&quot;;&nbsp;<br>

&nbsp;&nbsp;&nbsp;//允许该Query写&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dmStoryEditor-&gt;qryExec-&gt;RequestLive=true;&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dmStoryEditor-&gt;qryExec-&gt;SQL-&gt;Clear();&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dmStoryEditor-&gt;qryExec-&gt;SQL-&gt;Add(strSQL1);&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dmStoryEditor-&gt;qryExec-&gt;Open();&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dmStoryEditor-&gt;qryExec-&gt;First();&nbsp;<br>

&nbsp;&nbsp;&nbsp;//将该Query置为可写&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dmStoryEditor-&gt;qryExec-&gt;Edit();&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pScriptStream=new&nbsp;&nbsp;&nbsp;TBlobStream((TBlobField*)dmStoryEditor-&gt;&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qryExec-&gt;FieldByName(&quot;script&quot;),bmReadWrite);&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pScriptStream-&gt;Write(NewsScript.m_pScript,&nbsp;&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NewsScript.m_lScriptRealSize);&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dmStoryEditor-&gt;qryExec-&gt;Post();&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dmStoryEditor-&gt;qryExec-&gt;RequestLive=false;&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;pScriptStream;&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GlobalUnlock(NewsScript.m_hScript);&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UnLockMemories(NewsScript);&nbsp;<br>

</p>



</body>

</html>

⌨️ 快捷键说明

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