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

📄 subject_22338.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:22338 发表者:lp 发表日期:2002-11-25 13:52:07
<br>主题:如何将数据库的数据类型转换成C++的数据类型?
<br>内容:CString lpsz="SELECT * FROM SUPER";<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString message;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CDaoDatabase pdatabase;<BR>&nbsp;&nbsp;&nbsp;&nbsp;try<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pdatabase.Open(_T("ZHANG.MDB"));<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;catch(CDaoException *e)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;……<BR>&nbsp;&nbsp;&nbsp;&nbsp;COleVARIANT name;<BR>&nbsp;&nbsp;&nbsp;&nbsp;name=GetFieldValue(3);<BR>&nbsp;&nbsp;&nbsp;&nbsp;……<BR>打开数据库成功后,我打开一个记录集,然后用GetFieldValue返回一个COleVARIANT类型的值,我如何把这个值转换成CString型的值,或float型的值?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:雷神 回复日期:2002-11-25 15:20:40
<br>内容:下面这个类可以完成你说的工作用函数<BR><BR>strVARIANT<BR><BR>///crack.h<BR>class CCrack <BR>{ <BR>public: <BR>static LPCTSTR strFieldType(short sType); <BR>static LPCTSTR strQueryDefType(short sType); <BR>static LPCTSTR strBOOL(BOOL bFlag); <BR>static CString strVARIANT(const COleVariant&amp; var); <BR>}; <BR><BR>///crack.cpp<BR>#include "stdafx.h" <BR>#include "crack.h" <BR><BR>LPCTSTR CCrack::strFieldType(short sType) <BR>{ <BR>switch(sType){ <BR>case (dbBoolean): <BR>return _T("Bool"); <BR>case (dbByte): <BR>return _T("Byte"); <BR>case (dbInteger): <BR>return _T("Integer"); <BR>case (dbLong): <BR>return _T("Long"); <BR>case (dbCurrency): <BR>return _T("Currency"); <BR>case (dbSingle): <BR>return _T("Single"); <BR>case (dbDouble): <BR>return _T("Double"); <BR>case (dbDate): <BR>return _T("Date"); <BR>case (dbText): <BR>return _T("Text"); <BR>case (dbLongBinary): <BR>return _T("Long Binary"); <BR>case (dbMemo): <BR>return _T("Memo"); <BR>case (dbGUID): <BR>return _T("GUID"); <BR>} <BR>return _T("Unknown"); <BR>} <BR><BR>LPCTSTR CCrack::strQueryDefType(short sType) <BR>{ <BR>switch(sType){ <BR>case (dbQSelect): <BR>return _T("Select"); <BR>case (dbQAction): <BR>return _T("Action"); <BR>case (dbQCrosstab): <BR>return _T("Crosstab"); <BR>case (dbQDelete): <BR>return _T("Delete"); <BR>case (dbQUpdate): <BR>return _T("Update"); <BR>case (dbQAppend): <BR>return _T("Append"); <BR>case (dbQMakeTable): <BR>return _T("MakeTable"); <BR>case (dbQDDL): <BR>return _T("DDL"); <BR>case (dbQSQLPassThrough): <BR>return _T("SQLPassThrough"); <BR>case (dbQSetOperation): <BR>return _T("Set Operation"); <BR>case (dbQSPTBulk): <BR>return _T("SPTBulk"); <BR>} <BR>return _T("Unknown"); <BR>} <BR><BR>LPCTSTR CCrack::strBOOL(BOOL bFlag) <BR>{ <BR>return bFlag ? _T("TRUE") : _T("FALSE"); <BR>} <BR><BR>CString CCrack::strVARIANT(const COleVariant&amp; var) <BR>{ <BR>CString strRet; <BR>strRet = _T("Fish"); <BR>switch(var.vt){ <BR>case VT_EMPTY: <BR>case VT_NULL: <BR>strRet = _T("NULL"); <BR>break; <BR>case VT_I2: <BR>strRet.Format(_T("%hd"),V_I2(&amp;var)); <BR>break; <BR>case VT_I4: <BR>strRet.Format(_T("%d"),V_I4(&amp;var)); <BR>break; <BR>case VT_R4: <BR>strRet.Format(_T("%e"),(double)V_R4(&amp;var)); <BR>break; <BR>case VT_R8: <BR>strRet.Format(_T("%e"),V_R8(&amp;var)); <BR>break; <BR>case VT_CY: <BR>strRet = COleCurrency(var).Format(); <BR>break; <BR>case VT_DATE: <BR>strRet = COleDateTime(var).Format(_T("%m %d %y")); <BR>break; <BR>case VT_BSTR: <BR>strRet = V_BSTRT(&amp;var); <BR>break; <BR>case VT_DISPATCH: <BR>strRet = _T("VT_DISPATCH"); <BR>break; <BR>case VT_ERROR: <BR>strRet = _T("VT_ERROR"); <BR>break; <BR>case VT_BOOL: <BR>return strBOOL(V_BOOL(&amp;var)); <BR>case VT_VARIANT: <BR>strRet = _T("VT_VARIANT"); <BR>break; <BR>case VT_UNKNOWN: <BR>strRet = _T("VT_UNKNOWN"); <BR>break; <BR>case VT_I1: <BR>strRet = _T("VT_I1"); <BR>break; <BR>case VT_UI1: <BR>strRet.Format(_T("0x%02hX"),(unsigned short)V_UI1(&amp;var)); <BR>break; <BR>case VT_UI2: <BR>strRet = _T("VT_UI2"); <BR>break; <BR>case VT_UI4: <BR>strRet = _T("VT_UI4"); <BR>break; <BR>case VT_I8: <BR>strRet = _T("VT_I8"); <BR>break; <BR>case VT_UI8: <BR>strRet = _T("VT_UI8"); <BR>break; <BR>case VT_INT: <BR>strRet = _T("VT_INT"); <BR>break; <BR>case VT_UINT: <BR>strRet = _T("VT_UINT"); <BR>break; <BR>case VT_VOID: <BR>strRet = _T("VT_VOID"); <BR>break; <BR>case VT_HRESULT: <BR>strRet = _T("VT_HRESULT"); <BR>break; <BR>case VT_PTR: <BR>strRet = _T("VT_PTR"); <BR>break; <BR>case VT_SAFEARRAY: <BR>strRet = _T("VT_SAFEARRAY"); <BR>break; <BR>case VT_CARRAY: <BR>strRet = _T("VT_CARRAY"); <BR>break; <BR>case VT_USERDEFINED: <BR>strRet = _T("VT_USERDEFINED"); <BR>break; <BR>case VT_LPSTR: <BR>strRet = _T("VT_LPSTR"); <BR>break; <BR>case VT_LPWSTR: <BR>strRet = _T("VT_LPWSTR"); <BR>break; <BR>case VT_FILETIME: <BR>strRet = _T("VT_FILETIME"); <BR>break; <BR>case VT_BLOB: <BR>strRet = _T("VT_BLOB"); <BR>break; <BR>case VT_STREAM: <BR>strRet = _T("VT_STREAM"); <BR>break; <BR>case VT_STORAGE: <BR>strRet = _T("VT_STORAGE"); <BR>break; <BR>case VT_STREAMED_OBJECT: <BR>strRet = _T("VT_STREAMED_OBJECT"); <BR>break; <BR>case VT_STORED_OBJECT: <BR>strRet = _T("VT_STORED_OBJECT"); <BR>break; <BR>case VT_BLOB_OBJECT: <BR>strRet = _T("VT_BLOB_OBJECT"); <BR>break; <BR>case VT_CF: <BR>strRet = _T("VT_CF"); <BR>break; <BR>case VT_CLSID: <BR>strRet = _T("VT_CLSID"); <BR>break; <BR>} <BR>WORD vt = var.vt; <BR>if(vt &amp; VT_ARRAY){ <BR>#pragma warning(disable : 4244) <BR>vt = vt &amp; ~VT_ARRAY; <BR>#pragma warning(default : 4244) <BR>strRet = _T("Array of "); <BR>} <BR>if(vt &amp; VT_BYREF){ <BR>#pragma warning(disable : 4244) <BR>vt = vt &amp; ~VT_BYREF; <BR>#pragma warning(default : 4244) <BR>strRet += _T("Pointer to "); <BR>} <BR>if(vt != var.vt){ <BR>switch(vt){ <BR>case VT_EMPTY: <BR>strRet += _T("VT_EMPTY"); <BR>break; <BR>case VT_NULL: <BR>strRet += _T("VT_NULL"); <BR>break; <BR>case VT_I2: <BR>strRet += _T("VT_I2"); <BR>break; <BR>case VT_I4: <BR>strRet += _T("VT_I4"); <BR>break; <BR>case VT_R4: <BR>strRet += _T("VT_R4"); <BR>break; <BR>case VT_R8: <BR>strRet += _T("VT_R8"); <BR>break; <BR>case VT_CY: <BR>strRet += _T("VT_CY"); <BR>break; <BR>case VT_DATE: <BR>strRet += _T("VT_DATE"); <BR>break; <BR>case VT_BSTR: <BR>strRet += _T("VT_BSTR"); <BR>break; <BR>case VT_DISPATCH: <BR>strRet += _T("VT_DISPATCH"); <BR>break; <BR>case VT_ERROR: <BR>strRet += _T("VT_ERROR"); <BR>break; <BR>case VT_BOOL: <BR>strRet += _T("VT_BOOL"); <BR>break; <BR>case VT_VARIANT: <BR>strRet += _T("VT_VARIANT"); <BR>break; <BR>case VT_UNKNOWN: <BR>strRet += _T("VT_UNKNOWN"); <BR>break; <BR>case VT_I1: <BR>strRet += _T("VT_I1"); <BR>break; <BR>case VT_UI1: <BR>strRet += _T("VT_UI1"); <BR>break; <BR>case VT_UI2: <BR>strRet += _T("VT_UI2"); <BR>break; <BR>case VT_UI4: <BR>strRet += _T("VT_UI4"); <BR>break; <BR>case VT_I8: <BR>strRet += _T("VT_I8"); <BR>break; <BR>case VT_UI8: <BR>strRet += _T("VT_UI8"); <BR>break; <BR>case VT_INT: <BR>strRet += _T("VT_INT"); <BR>break; <BR>case VT_UINT: <BR>strRet += _T("VT_UINT"); <BR>break; <BR>case VT_VOID: <BR>strRet += _T("VT_VOID"); <BR>break; <BR>case VT_HRESULT: <BR>strRet += _T("VT_HRESULT"); <BR>break; <BR>case VT_PTR: <BR>strRet += _T("VT_PTR"); <BR>break; <BR>case VT_SAFEARRAY: <BR>strRet += _T("VT_SAFEARRAY"); <BR>break; <BR>case VT_CARRAY: <BR>strRet += _T("VT_CARRAY"); <BR>break; <BR>case VT_USERDEFINED: <BR>strRet += _T("VT_USERDEFINED"); <BR>break; <BR>case VT_LPSTR: <BR>strRet += _T("VT_LPSTR"); <BR>break; <BR>case VT_LPWSTR: <BR>strRet += _T("VT_LPWSTR"); <BR>break; <BR>case VT_FILETIME: <BR>strRet += _T("VT_FILETIME"); <BR>break; <BR>case VT_BLOB: <BR>strRet += _T("VT_BLOB"); <BR>break; <BR>case VT_STREAM: <BR>strRet += _T("VT_STREAM"); <BR>break; <BR>case VT_STORAGE: <BR>strRet += _T("VT_STORAGE"); <BR>break; <BR>case VT_STREAMED_OBJECT: <BR>strRet += _T("VT_STREAMED_OBJECT"); <BR>break; <BR>case VT_STORED_OBJECT: <BR>strRet += _T("VT_STORED_OBJECT"); <BR>break; <BR>case VT_BLOB_OBJECT: <BR>strRet += _T("VT_BLOB_OBJECT"); <BR>break; <BR>case VT_CF: <BR>strRet += _T("VT_CF"); <BR>break; <BR>case VT_CLSID: <BR>strRet += _T("VT_CLSID"); <BR>break; <BR>} <BR>} <BR>return strRet; <BR>} <BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

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