-
- string CAdoConnection::VariantToString(const _variant_t &var)
- {
- string strValue;
- TCHAR szValue[1024] = {0x00};
-
- switch (var.vt)
- {
- case VT_BSTR://字符串
- case VT_LPSTR://字符串
- case VT_LPWSTR://字符串
- strValue = (LPCTSTR)(_bstr_t)var;
- break;
-
- case VT_I1:
- case VT_UI1:
- _stprintf(szValue, _T("%d"), var.bVal);
- strValue = szValue;
- break;
-
- case VT_I2://短整型
- _stprintf(szValue, _T("%d"), var.iVal);
- strValue = szValue;
- break;
-
- case VT_UI2://无符号短整型
- _stprintf(szValue, _T("%d"), var.uiVal);
- strValue = szValue;
- break;
-
- case VT_INT://整型
- _stprintf(szValue, _T("%d"), var.intVal);
- strValue = szValue;
- break;
-
- case VT_I4: //整型
- _stprintf(szValue, _T("%d"), var.lVal);
- strValue = szValue;
- break;
-
- case VT_I8: //长整型
- _stprintf(szValue, _T("%ld"), var.bVal);
- strValue = szValue;
- break;
-
- case VT_UINT://无符号整型
- _stprintf(szValue, _T("%u"), var.uintVal);
- strValue = szValue;
- break;
-
- case VT_UI4: //无符号整型
- _stprintf(szValue, _T("%u"), var.ulVal);
- strValue = szValue;
- break;
-
- case VT_UI8: //无符号长整型
- _stprintf(szValue, _T("%u"), var.ulVal);
- strValue = szValue;
- break;
-
- case VT_VOID:
- _stprintf(szValue, _T("%8x"), (unsigned int)var.byref);
- strValue = szValue;
- break;
-
- case VT_R4://浮点型
- _stprintf(szValue, _T("%.4f"), var.fltVal);
- strValue = szValue;
- break;
-
- case VT_R8://双精度型
- _stprintf(szValue, _T("%.8f"), var.dblVal);
- strValue = szValue;
- break;
-
- case VT_DECIMAL: //小数
- _stprintf(szValue, _T("%.8f"), (double)var);
- strValue = szValue;
- break;
-
- case VT_CY:
- {
- COleCurrency cy = var.cyVal;
- strValue = cy.Format();
- }
- break;
-
- case VT_BLOB:
- case VT_BLOB_OBJECT:
- case 0x2011:
- strValue = "[BLOB]";
- break;
-
- case VT_BOOL://布尔型
- strValue = var.boolVal ? "TRUE" : "FALSE";
- break;
-
- case VT_DATE: //日期型
- {
- DATE dt = var.date;
- COleDateTime da = COleDateTime(dt);
- strValue = da.Format("%Y-%m-%d %H:%M:%S");
- }
- break;
-
- case VT_NULL://NULL值
- strValue = "VT_NULL";
- break;
-
- case VT_EMPTY://空
- strValue = "";
- break;
-
- case VT_UNKNOWN://未知类型
- default:
- strValue = "UN_KNOWN";
- break;
- }
-
- return strValue;
- }