我在VC6.0中想用ADO方式来读取MySQL中的数据,代码如下:  AfxOleInit();  _ConnectionPtr m_pConn;
  m_pConn.CreateInstance("ADODB.Connection"); 
  m_pConn->Open("Driver={MySQL Connector/ODBC v5}; Server=localhost; Database=ubfinancedb; UID=root; PWD=123456;", "", "",adModeUnknown);  _RecordsetPtr recordset;
  recordset.CreateInstance("ADODB.Recordset");  recordset->Open("SELECT name FROM test", _variant_t((IDispatch *)m_pConn, true), adOpenStatic, adLockOptimistic, adCmdText);

  if(!recordset->adoEOF)
  {
    _variant_t vName;
    vName = recordset->GetCollect("name");
    CString strPrint((LPCTSTR)(_bstr_t)vSalor);
    AfxMessageBox(strPrint);
  }
  recordset->Close();代码本身比较简单,应该没什么问题,除了对_variant_t和_bstr_t搞不清楚。运行环境:
MySQL 版本 5.0.18。
Test表只有两个简单字段(id INT, name VARCHAR(20)), 假设有值(1, '谢谢大家').测试结果:
1)当ODBC Driver用3.51的版本{MySQL ODBC 3.51 Driver}时,上面代码读取的结果是乱码"????"
2) 但当ODBC Driver 用最新的 {MySQL Connector/ODBC v5}时,得到的结果是"谢谢",即只读到前一半的数据,如果字段值是字母则读到的结果正确无误,只是读取中文时每次只读到前一半的数据。十分怪异,请大家指教。有什么办法可以用ADO正确读取MySQL的中文字段。