把整型,浮点型,Money型和时间型都转换成字符串,怎么做?

解决方案 »

  1.   

    用GetCollect取的时候,直接转换成字符串。
      

  2.   

    直接用str1.format('%S',上述变量);  不行么?
      

  3.   

    CString str=(char *)(_bstr_t)var;
      

  4.   

    是要自己转啊,用CString的Format()即可,
    Str.Format("%d",整型)
    Str.Format("%f",浮点型)
    Str.Format("%s",日期型)//日期型随数据库的不同而不同,SQL Server和TeraData中是string;
    Str.Format("$f",Money型)//Money实际上是浮点型
      

  5.   

    VARIANT var
    switch (var.vt)
    {
    case 
    ...
    ...
    }
    自己做转换
      

  6.   


    我也刚搞数据库,这个类完全可以解决你得问题!
    class CVarConvertStr
    {// Operations
    public:
    static LPCTSTR strFieldType(short sType); 
    static LPCTSTR strQueryDefType(short sType); 
    static LPCTSTR strBOOL(BOOL bFlag); 
             //这个函数是你需要详细看的
    static CString strVARIANT(const COleVariant& var); };
    LPCTSTR CVarConvertStr::strFieldType(short sType) 

    switch(sType)

    case (dbBoolean): 
    return _T("Bool"); 
    case (dbByte): 
    return _T("Byte"); 
    case (dbInteger): 
    return _T("Integer"); 
    case (dbLong): 
    return _T("Long"); 
    case (dbCurrency): 
    return _T("Currency"); 
    case (dbSingle): 
    return _T("Single"); 
    case (dbDouble): 
    return _T("Double"); 
    case (dbDate): 
    return _T("Date"); 
    case (dbText): 
    return _T("Text"); 
    case (dbLongBinary): 
    return _T("Long Binary"); 
    case (dbMemo): 
    return _T("Memo"); 
    case (dbGUID): 
    return _T("GUID"); 

    return _T("Unknown"); 
    } LPCTSTR CVarConvertStr::strQueryDefType(short sType) 

    switch(sType){ 
    case (dbQSelect): 
    return _T("Select"); 
    case (dbQAction): 
    return _T("Action"); 
    case (dbQCrosstab): 
    return _T("Crosstab"); 
    case (dbQDelete): 
    return _T("Delete"); 
    case (dbQUpdate): 
    return _T("Update"); 
    case (dbQAppend): 
    return _T("Append"); 
    case (dbQMakeTable): 
    return _T("MakeTable"); 
    case (dbQDDL): 
    return _T("DDL"); 
    case (dbQSQLPassThrough): 
    return _T("SQLPassThrough"); 
    case (dbQSetOperation): 
    return _T("Set Operation"); 
    case (dbQSPTBulk): 
    return _T("SPTBulk"); 

    return _T("Unknown"); 
    } LPCTSTR CVarConvertStr::strBOOL(BOOL bFlag) 

    return bFlag ? _T("TRUE") : _T("FALSE"); 
    } CString CVarConvertStr::strVARIANT(const COleVariant& var) 

    CString strRet; 
    strRet = _T("Fish"); 
    switch(var.vt){ 
    case VT_EMPTY: 
    case VT_NULL: 
    strRet = _T("NULL"); 
    break; 
    case VT_I2: 
    strRet.Format(_T("%hd"),V_I2(&var)); 
    break; 
    case VT_I4: 
    strRet.Format(_T("%d"),V_I4(&var)); 
    break; 
    case VT_R4: 
    strRet.Format(_T("%e"),(double)V_R4(&var)); 
    break; 
    case VT_R8: 
    strRet.Format(_T("%e"),V_R8(&var)); 
    break; 
    case VT_CY: 
    strRet = COleCurrency(var).Format(); 
    break; 
    case VT_DATE: 
    strRet = COleDateTime(var).Format(_T("%m %d %y")); 
    break; 
    case VT_BSTR: 
    strRet = V_BSTRT(&var); 
    break; 
    case VT_DISPATCH: 
    strRet = _T("VT_DISPATCH"); 
    break; 
    case VT_ERROR: 
    strRet = _T("VT_ERROR"); 
    break; 
    case VT_BOOL: 
    return strBOOL(V_BOOL(&var)); 
    case VT_VARIANT: 
    strRet = _T("VT_VARIANT"); 
    break; 
    case VT_UNKNOWN: 
    strRet = _T("VT_UNKNOWN"); 
    break; 
    case VT_I1: 
    strRet = _T("VT_I1"); 
    break; 
    case VT_UI1: 
    strRet.Format(_T("0x%02hX"),(unsigned short)V_UI1(&var)); 
    break; 
    case VT_UI2: 
    strRet = _T("VT_UI2"); 
    break; 
    case VT_UI4: 
    strRet = _T("VT_UI4"); 
    break; 
    case VT_I8: 
    strRet = _T("VT_I8"); 
    break; 
    case VT_UI8: 
    strRet = _T("VT_UI8"); 
    break; 
    case VT_INT: 
    strRet = _T("VT_INT"); 
    break; 
    case VT_UINT: 
    strRet = _T("VT_UINT"); 
    break; 
    case VT_VOID: 
    strRet = _T("VT_VOID"); 
    break; 
    case VT_HRESULT: 
    strRet = _T("VT_HRESULT"); 
    break; 
    case VT_PTR: 
    strRet = _T("VT_PTR"); 
    break; 
    case VT_SAFEARRAY: 
    strRet = _T("VT_SAFEARRAY"); 
    break; 
    case VT_CARRAY: 
    strRet = _T("VT_CARRAY"); 
    break; 
    case VT_USERDEFINED: 
    strRet = _T("VT_USERDEFINED"); 
    break; 
    case VT_LPSTR: 
    strRet = _T("VT_LPSTR"); 
    break; 
    case VT_LPWSTR: 
    strRet = _T("VT_LPWSTR"); 
    break; 
    case VT_FILETIME: 
    strRet = _T("VT_FILETIME"); 
    break; 
    case VT_BLOB: 
    strRet = _T("VT_BLOB"); 
    break; 
    case VT_STREAM: 
    strRet = _T("VT_STREAM"); 
    break; 
    case VT_STORAGE: 
    strRet = _T("VT_STORAGE"); 
    break; 
    case VT_STREAMED_OBJECT: 
    strRet = _T("VT_STREAMED_OBJECT"); 
    break; 
    case VT_STORED_OBJECT: 
    strRet = _T("VT_STORED_OBJECT"); 
    break; 
    case VT_BLOB_OBJECT: 
    strRet = _T("VT_BLOB_OBJECT"); 
    break; 
    case VT_CF: 
    strRet = _T("VT_CF"); 
    break; 
    case VT_CLSID: 
    strRet = _T("VT_CLSID"); 
    break; 

    WORD vt = var.vt; 
    if(vt & VT_ARRAY)

    #pragma warning(disable : 4244) 
    vt = vt & ~VT_ARRAY; 
    #pragma warning(default : 4244) 
    strRet = _T("Array of "); 

    if(vt & VT_BYREF)
    {
    #pragma warning(disable : 4244) 
    vt = vt & ~VT_BYREF; 
    #pragma warning(default : 4244) 
    strRet += _T("Pointer to "); 

    if(vt != var.vt)

    switch(vt){ 
    case VT_EMPTY: 
    strRet += _T("VT_EMPTY"); 
    break; 
    case VT_NULL: 
    strRet += _T("VT_NULL"); 
    break; 
    case VT_I2: 
    strRet += _T("VT_I2"); 
    break; 
    case VT_I4: 
    strRet += _T("VT_I4"); 
    break; 
    case VT_R4: 
    strRet += _T("VT_R4"); 
    break; 
    case VT_R8: 
    strRet += _T("VT_R8"); 
    break; 
    case VT_CY: 
    strRet += _T("VT_CY"); 
    break; 
    case VT_DATE: 
    strRet += _T("VT_DATE"); 
    break; 
    case VT_BSTR: 
    strRet += _T("VT_BSTR"); 
    break; 
    case VT_DISPATCH: 
    strRet += _T("VT_DISPATCH"); 
    break; 
    case VT_ERROR: 
    strRet += _T("VT_ERROR"); 
    break; 
    case VT_BOOL: 
    strRet += _T("VT_BOOL"); 
    break; 
    case VT_VARIANT: 
    strRet += _T("VT_VARIANT"); 
    break; 
    case VT_UNKNOWN: 
    strRet += _T("VT_UNKNOWN"); 
    break; 
    case VT_I1: 
    strRet += _T("VT_I1"); 
    break; 
    case VT_UI1: 
    strRet += _T("VT_UI1"); 
    break; 
    case VT_UI2: 
    strRet += _T("VT_UI2"); 
    break; 
    case VT_UI4: 
    strRet += _T("VT_UI4"); 
    break; 
    case VT_I8: 
    strRet += _T("VT_I8"); 
    break; 
    case VT_UI8: 
    strRet += _T("VT_UI8"); 
    break; 
    case VT_INT: 
    strRet += _T("VT_INT"); 
    break; 
    case VT_UINT: 
    strRet += _T("VT_UINT"); 
    break; 
    case VT_VOID: 
    strRet += _T("VT_VOID"); 
    break; 
    case VT_HRESULT: 
    strRet += _T("VT_HRESULT"); 
    break; 
    case VT_PTR: 
    strRet += _T("VT_PTR"); 
    break; 
    case VT_SAFEARRAY: 
    strRet += _T("VT_SAFEARRAY"); 
    break;
    case VT_CARRAY: 
    strRet += _T("VT_CARRAY"); 
    break; 
    case VT_USERDEFINED: 
    strRet += _T("VT_USERDEFINED"); 
    break; 
    case VT_LPSTR: 
    strRet += _T("VT_LPSTR"); 
    break; 
    case VT_LPWSTR: 
    strRet += _T("VT_LPWSTR"); 
    break; 
    case VT_FILETIME: 
    strRet += _T("VT_FILETIME"); 
    break; 
    case VT_BLOB: 
    strRet += _T("VT_BLOB"); 
    break; 
    case VT_STREAM: 
    strRet += _T("VT_STREAM"); 
    break; 
    case VT_STORAGE: 
    strRet += _T("VT_STORAGE"); 
    break; 
    case VT_STREAMED_OBJECT: 
    strRet += _T("VT_STREAMED_OBJECT"); 
    break; 
    case VT_STORED_OBJECT: 
    strRet += _T("VT_STORED_OBJECT"); 
    break; 
    case VT_BLOB_OBJECT: 
    strRet += _T("VT_BLOB_OBJECT"); 
    break; 
    case VT_CF: 
    strRet += _T("VT_CF"); 
    break; 
    case VT_CLSID: 
    strRet += _T("VT_CLSID"); 
    break; 


    return strRet; 
    }
      

  7.   

    在mfc的example里面由一个类Crack.h和Crack.cpp
      

  8.   

    如果直接用SDK,很容易转换。
    把所有字段Bind到一个字符缓冲区。大部分数据库系统会自动提供转换。
    TCHAR szData[MAX_BUFFER];
    LONG cbData;
    SQLBindCol(hstmt, 1, SQL_C_CHAR, szData, MAX_BUFFER, &cbData);
    SQLBindCol(hstmt, 2, SQL_C_CHAR, szData, MAX_BUFFER, &cbData);
    SQLBindCol(hstmt, n, SQL_C_CHAR, szData, MAX_BUFFER, &cbData);