mysql connector c++5.1 vs2008字符集的问题:请教一个问题:
我用connector c++连接mysql数据库,数据库的字符集都已经设好,都支持中文,但在VS2008中访问数据,中文都是乱码,请问调用哪个函数可以进行正确的字符编码设置,用setclientoption好像不管用,代码如下:
void CParamConfig::InitDeviceListFromDatabase(CXListCtrl& pList)
{
CSimpleDAO::LoadDatabaseSchemaInfo(m_dataSource, m_user, m_password);
string strErrorMsg;
mysql::MySQL_Driver *driver;
//MySQL_Connection* con;
//Statement *state;
ResultSet *result;

try
{
// initialize driver
driver = sql::mysql::get_mysql_driver_instance();
// create link
//con = (MySQL_Connection*)driver->connect(m_dataSource, m_user, m_password);
auto_ptr<MySQL_Connection> con((MySQL_Connection*)driver->connect(m_dataSource, m_user, m_password));
con->setClientOption("charset", "gb2312");
auto_ptr<Statement> state(con->createStatement());
//state = con->createStatement();
state->execute("use WATCHLISTCLIENT");
// query
result = state->executeQuery("SELECT * FROM DVS");
// save current device list to a map
this->SaveDeviceList(result);
while(result->previous())
; // output //pList.SetColumnWidth(4, 0);
pList.SetListModified(TRUE);
int i = 0;
CString tmpstr;
while(result->next())
{
// device id
int id = result->getInt("ID");
// device name
SQLString deviceName = result->getString("DVSNAME");
// device type
int deviceType = result->getInt("DVSTYPE");
SQLString deviceState = result->getString("ONLINE");
int flag = result->getInt("flag"); //pList.SetModified(i, 0, FALSE);
pList.InsertItem(i, deviceState->c_str());
pList.SetItemText(i, DVS_COLUMN_INDEX_TYPE, this->getDeviceType(deviceType));
pList.SetItemText(i, DVS_COLUMN_INDEX_NAME, static_cast<LPCTSTR>(_T(deviceName->c_str())));
pList.SetItemText(i, DVS_COLUMN_INDEX_FLAG, (flag == STATUS_FLAG_OPEN ? _T("开启") : _T("关闭")));
//pList.SetCheckbox(i, COLUMN_INDEX_FLAG, (flag == STATUS_FLAG_OPEN ? true : false));
tmpstr.Format("%d", id);
pList.SetItemText(i, DVS_COLUMN_INDEX_ID, tmpstr.GetBuffer(0)); i ++;
}
pList.RedrawWindow();
result->close();

}
catch (SQLException sqle)
{
result->close();
strErrorMsg = _T("数据库操作异常:");
strErrorMsg.append(sqle.getSQLState());
strErrorMsg.append(sqle.getSQLState());
TRACE0(strErrorMsg);
}
catch (...)
{
result->close();

TRACE0("InitDeviceListFromDatabase 发生异常.");
}
}