0x01046D40  02 00 00 00 61 00 64 00 6d 00 69 00 6e 00 00 00 cd cd cd cd cd cd cd cd 61 00 64 00  ....a.d.m.i.n...ÍÍÍÍÍÍÍÍa.d.
0x01046D5C  6d 00 69 00 6e 00 00 00 cd cd cd cd cd cd cd cd cd cd cd cd cd cd cd cd cd cd cd cd  m.i.n...ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
0x01046D78  31 00 39 00 32 00 2e 00 31 00 36 00 38 00 2e 00 31 00 2e 00 00 00 cd 4b 6d d5 8b 07  1.9.2...1.6.8...1.....ÍKmÕ‹.
0x01046D94  68 98 98 00 00 cd cd cd cd cd cd cd cd cd cd 74 00 65 00 73 00 74 00 20 00 64 00 65  h˜˜..ÍÍÍÍÍÍÍÍÍÍt.e.s.t. .d.e
是不是哪里有参数需要设置?? 兄弟们帮个忙. 小弟感激不尽

解决方案 »

  1.   

    DBBINDING *pDBBindings = NULL;
    DBBINDSTATUS *pDBBindStatus = NULL;
    ULONG nCols;
    HACCESSOR hAccessor;
    IAccessor *pIAccessor = NULL;
    IRowset *pIRowset;
    DBCOLUMNINFO *pColumnsInfo = NULL;
    OLECHAR *pColumnStrings = NULL;
    char *pRowValues; ExecuteSQL(L"select * from client_list", &pIRowset);
    GetColumnsInfo(pIRowset, &nCols, &pColumnsInfo, &pColumnStrings);
    Bind(nCols, pColumnsInfo, &pDBBindings, &pRowValues); pDBBindStatus = new DBBINDSTATUS[nCols];
    pIRowset->QueryInterface(IID_IAccessor, (void**)&pIAccessor);
    pIAccessor->CreateAccessor(DBACCESSOR_ROWDATA,
    nCols,
    pDBBindings,
    0,
    &hAccessor,
    pDBBindStatus
    );
    HROW rghRows[NUM_PERPAGE];
    HROW* pRow = &rghRows[0];
    ULONG cRowsObtained;
    ULONG iRow; while(TRUE)
    {
    pIRowset->GetNextRows(0, 0, NUM_PERPAGE, &cRowsObtained, &pRow);
    if(cRowsObtained == 0)
    break; for(iRow = 0; iRow < cRowsObtained; iRow ++)
    {
    pIRowset->GetData(rghRows[iRow], hAccessor, pRowValues);
    CString strCaption, strTmp;
    //WideCharToMultiByte(CP_SYMBOL, WC_DEFAULTCHAR, (LPCWSTR)&pRowValues[pDBBindings[4].obValue], pDBBindings[4].cbMaxLen, strTmp.GetBuffer(), pDBBindings[4].cbMaxLen, NULL, NULL);
    //WCHAR *wc = new WCHAR[pDBBindings[4].cbMaxLen];
    //MultiByteToWideChar(CP_SYMBOL, WC_DEFAULTCHAR, &pRowValues[pDBBindings[4].obValue], pDBBindings[4].cbMaxLen, wc, pDBBindings[4].cbMaxLen);
    //delete wc;
    //CString::CopyChars(strTmp.GetBuffer(), &pRowValues[pDBBindings[3].obValue],pDBBindings[3].obValue - pDBBindings[2].obValue);
    char* pc = new char[pDBBindings[4].cbMaxLen];
    for(ULONG l = 0, j = 0; l < pDBBindings[4].cbMaxLen; l ++)
    {
    if(pRowValues[pDBBindings[4].obValue+l] != 0)
    {
    *(pc+j++) = pRowValues[pDBBindings[4].obValue+l];
    }
    }
    *(pc+j) = '\0';
    strCaption.Format("%s - [%s]", pc, &pRowValues[pDBBindings[3].obValue]);
    ptree->InsertItem(strCaption.GetBuffer(), 0, 0, TVI_ROOT, TVI_FIRST);
    strCaption.ReleaseBuffer();
    delete pc;
    }
    pIRowset->ReleaseRows(cRowsObtained, rghRows, NULL, NULL, NULL);
    } pIAccessor->ReleaseAccessor(hAccessor, NULL);
    pIAccessor->Release(); delete [] pDBBindings;
    delete [] pDBBindStatus;
    delete [] pRowValues; g_pIMalloc->Free( pColumnsInfo );
    g_pIMalloc->Free( pColumnStrings );
      

  2.   

    从数据库中取到值后 pRowValues 得到了一串数据
    可是数据内容不是一个连续的字符序列.. 
    而是每个字母两人字节, 一个是ASCII码, 一个是0, 这显然不能正常使用在显示上啊? 我问的问题是, 这种数据怎么提取出来?? 不好意思, 没有说明问题..
      

  3.   

    知道问题出在哪了, 我的数据库字段设的是 nvarchar
    改成 varchar 就没问题了, 但是, 我想问一下, 如果是 nvarchar 的格式的字段, 这种数据怎么取值啊??