📄 csdn_文档中心_在vc中用ole db读写sql server中的blob字段.htm
字号:
style="mso-spacerun: yes">
</SPAN>= NULL;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN>ICommandProperties* pICommandProperties = NULL;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN>IRowsetChange*<SPAN
style="mso-spacerun: yes">
</SPAN>pIRowsetChange<SPAN
style="mso-spacerun: yes"> </SPAN>=
NULL;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN>IRowset*<SPAN
style="mso-spacerun: yes">
</SPAN>pIRowset<SPAN style="mso-spacerun: yes">
</SPAN><SPAN
style="mso-spacerun: yes"> </SPAN>=
NULL;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN>CSeqStream*<SPAN
style="mso-spacerun: yes">
</SPAN>pMySeqStream<SPAN
style="mso-spacerun: yes">
</SPAN>= NULL;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN
lang=EN-US> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN>ULONG
cRowsObtained = 0;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN>HACCESSOR
hAccessor = DB_NULL_HACCESSOR;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN>DBBINDSTATUS
rgBindStatus[cBindings];</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN>HROW* rghRows =
NULL;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN>const ULONG
cPropSets = 1;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN
lang=EN-US> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN>DBPROPSET<SPAN
style="mso-spacerun: yes">
</SPAN>rgPropSets[cPropSets];</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN>const ULONG
cProperties = 1;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN>DBPROP<SPAN
style="mso-spacerun: yes">
</SPAN>rgProperties[cProperties];</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"></SPAN></SPAN> </P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN>rgPropSets[0].guidPropertySet = DBPROPSET_ROWSET;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN>rgPropSets[0].cProperties = cProperties;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN>rgPropSets[0].rgProperties = rgProperties;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"></SPAN></SPAN> </P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN><SPAN
style="mso-spacerun: yes"> </SPAN>rgPropSets[0].rgProperties[0].dwPropertyID
= DBPROP_UPDATABILITY;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN>rgPropSets[0].rgProperties[0].dwOptions =
DBPROPOPTIONS_REQUIRED;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN>rgPropSets[0].rgProperties[0].dwStatus =
DBPROPSTATUS_OK;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN>rgPropSets[0].rgProperties[0].colid = DB_NULLID;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN>rgPropSets[0].rgProperties[0].vValue.vt = VT_I4;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN>V_I4(&rgPropSets[0].rgProperties[0].vValue) =
DBPROPVAL_UP_CHANGE;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN
lang=EN-US> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN>//</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">设置</SPAN><SPAN
lang=EN-US>Rowset</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN>hr =
g_pICommandText->QueryInterface(IID_ICommandProperties,</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN>(void **)&pICommandProperties);</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN>if
(FAILED(hr))</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN>{</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN>TRACE0("Failed to get ICommandProperties to set rowset
properties.\n");</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN>return FALSE;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN>} </SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN>hr =
pICommandProperties->SetProperties(cPropSets,
rgPropSets);</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN>if
(FAILED(hr))</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN>{</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN>TRACE0("Execute failed to set rowset
properties.\n");</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN>return FALSE;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN>} </SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN
lang=EN-US> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN>//</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">执行命令</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-tab-count: 1">
</SPAN>CString strSql;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-tab-count: 1">
</SPAN>strSql.Format("SELECT Stream FROM tMaterials WHERE MaterialID
= %s ",gToQuote(awcname));</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN
lang=EN-US> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-tab-count: 1">
</SPAN>int nlen=strSql.GetLength();</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-tab-count: 1">
</SPAN>wchar_t *pSql=(wchar_t*)malloc(nlen*sizeof(wchar_t));<SPAN
style="mso-tab-count: 1"> </SPAN></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-tab-count: 1">
</SPAN>mbstowcs(pSql,strSql.GetBuffer(MAX_PATH),nlen);</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN
lang=EN-US> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-tab-count: 1">
</SPAN>if (FAILED(hr =
g_pICommandText->SetCommandText(DBGUID_DBSQL,</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-tab-count: 1">
</SPAN><SPAN
style="mso-tab-count: 1">
</SPAN>pSql)))</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-tab-count: 1">
</SPAN>{</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-tab-count: 1">
</SPAN><SPAN
style="mso-tab-count: 1">
</SPAN>TRACE0("failed");</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-tab-count: 1">
</SPAN><SPAN
style="mso-tab-count: 1">
</SPAN>return FALSE;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-tab-count: 1">
</SPAN>}</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN
lang=EN-US> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN
lang=EN-US> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-tab-count: 1">
</SPAN>hr = g_pICommandText->Execute(NULL, IID_IRowsetChange,
NULL, NULL,</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN>(IUnknown**)&pIRowsetChange);</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN>if
(FAILED(hr))</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN>{</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN>TRACE0("Failed to execute the command\n");</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN>return FALSE;</SPAN></
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -