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

📄 30.htm

📁 C++Builder教学大全
💻 HTM
字号:


<html>

<head>

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

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

</head>

<div><center>

<table border="0" width="640">

  <tr><td align="center"><b>BCB实现BLOB字段的读写</b></td></tr>

  <tr><td align="center"><font color="#CC9933"></font></td></tr>

  <tr><td>&nbsp;&nbsp;对于SQL中的TEXT、IMAGE、MEMO字段的存取,可以采用下列程序: <br>BLOB字段的读取: <br> TBlobSTream* TemplateStream; <br> char* TempPlatePtr;              <br> <br> TemplateStream=new   TBlobStream((TBlobField*)WebQuery-&gt;FieldByName <br>                        ("SearchTem"),bmReadWrite); <br> TemplatePtr= new char[TemplateStream-&gt;Size]; <br> TemplateStream-&gt;Read(TemplatePtr, TemplateStream-&gt;Size); <br> <br>BLOB字段的写入: <br> TBlobSTream* TemplateStream; <br> char* TempPlatePtr;              <br> <br> TemplateStream=new   TBlobStream((TBlobField*)WebQuery-&gt;FieldByName <br>                        ("SearchTem"),bmReadWrite); <br> TemplatePtr= new char[TemplateStream-&gt;Size]; <br> TemplateStream-&gt;Write(TemplatePtr, TemplateStream-&gt;Size); <br> <br>________________________________________________________________ <br>补充: <br>获得字段的大小用函数datalength <br> <br>SQL Server端要作一点设置: <br>By default, WRITETEXT is a nonlogged operation. This means that  <br>text or image data is not logged when it is written into the database.  <br>To use WRITETEXT in its default, nonlogged state,  <br>//注意!! <br>the system administrator must use the sp_dboption system stored  <br>procedure to set select into/bulkcopy,  <br>// <br>which allows nonlogged data to be inserted. <br> <br>做了试验,直接写SQL语句好象不行. <br>____________________________________________________________________ <br>        一些注意事项和一个例子 <br>在写入时: <br>(1)如果使用的是TTable,则要将其ReadOnly属性先置为false,然后调用Edit函数; <br>(2)如果使用的是TQuery,则要将其RequestLive属性先置为true,然后调用Edit函数; <br>使得TTable(TQuery)是可写的. <br> <br>下面是一个使用TQuery往content表(主键file_id)中插入一条记录的例子, <br>script为一个BLOB字段: <br>   TBlobStream *pScriptStream; <br>  //插入一条记录 <br>        strSQL1="insert  into  content(file_id,script,key_image) values(''"; <br>        strSQL1=strSQL1+m_szFileID+"'',null,null)"; <br>        dmStoryEditor-&gt;qryExec-&gt;SQL-&gt;Clear(); <br>        dmStoryEditor-&gt;qryExec-&gt;SQL-&gt;Add(strSQL1); <br>        dmStoryEditor-&gt;qryExec-&gt;ExecSQL(); <br>        dmStoryEditor-&gt;qryExec-&gt;Close(); <br>  //整理要写入的Blob数据   <br>        LockMemories(NewsScript); <br>        NewsScript.GetEdition(NewsScript.m_ScriptHead.byteEditionNum); <br>        NewsScript.m_pScript=(BYTE *)GlobalLock(NewsScript.m_hScript); <br>        if(NewsScript.m_pScript!=NULL) <br>        { <br>   //再将刚插入的记录读出来,使该Query与该条记录关联 <br>        strSQL1="select  file_id,script  from  content  where  file_id=''"+ <br>                m_szFileID+"''"; <br>   //允许该Query写 <br>            dmStoryEditor-&gt;qryExec-&gt;RequestLive=true; <br>            dmStoryEditor-&gt;qryExec-&gt;SQL-&gt;Clear(); <br>            dmStoryEditor-&gt;qryExec-&gt;SQL-&gt;Add(strSQL1); <br>            dmStoryEditor-&gt;qryExec-&gt;Open(); <br>            dmStoryEditor-&gt;qryExec-&gt;First(); <br>   //将该Query置为可写 <br>            dmStoryEditor-&gt;qryExec-&gt;Edit(); <br>            pScriptStream=new   TBlobStream((TBlobField*)dmStoryEditor-&gt; <br>                                qryExec-&gt;FieldByName("script"),bmReadWrite); <br>            pScriptStream-&gt;Write(NewsScript.m_pScript,  <br>                                        NewsScript.m_lScriptRealSize); <br>            dmStoryEditor-&gt;qryExec-&gt;Post(); <br>            dmStoryEditor-&gt;qryExec-&gt;RequestLive=false; <br>            delete pScriptStream; <br>       } <br>       GlobalUnlock(NewsScript.m_hScript); <br>       UnLockMemories(NewsScript); </td></tr> 

</table></center></div> 

</html> 

⌨️ 快捷键说明

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