在一個測試 連接數據庫的 函數中 有類似 數據類型轉換的錯誤:
函數源碼如下:
void CStudentScoreDlg::OnClickedButton1()
{
// TODO: 在此添加控件通知處理程序代碼
MYSQL m_sqlCon;
mysql_init(&m_sqlCon);
// localhost:服務器 root/xxx爲賬號密碼 managesystemdb爲數據庫名 3306爲端口
if (!mysql_real_connect(&m_sqlCon, "localhost", "root", "xxx", "managesystemdb", 3306, NULL, 0))
{
AfxMessageBox(_T("訪問數據庫失敗!"));
CString e = mysql_error(&m_sqlCon);//需要將項目屬性中字符集修改爲“使用多字節字符集”或“未設置”
MessageBox(e);
return;
}
else
{
AfxMessageBox(_T("成功!"));
mysql_query(&m_sqlCon, "SET NAMES 'GB2312'");//解決從數據庫中讀取數據後漢字亂碼顯示的問題
}
}
函數中的 CString e = mysql_error(&m_sqlCon);
這行 報下面的錯誤
- 錯誤 1 error C2440: “初始化”: 無法從“char *”轉換爲
“ATL::CStringT<BaseType,StringTraits>
還有幾個錯誤 - 錯誤 4 error C2664: “sendto”: 不能將參數 2 從“CString”轉換爲“const char *”
錯誤 5 error C2664: “CWnd::SetDlgItemTextW”: 不能將參數 2 從“const char [4]”轉換爲“LPCTSTR”
9 IntelliSense: “const char *” 類型的實參與 “LPCTSTR” 類型的形參不兼容
- 7 IntelliSense: 不存在從 “char *” 轉換到
"ATL::CStringT<wchar_t, StrTraitMFC_DLL<wchar_t, ATL::ChTraitsCRT<wchar_t>>>"
的適當構造函數
問題來源:
unicode字符問題。2013工程默認是寬字符版本
解決方法:
菜單 項目 -> 屬性 (打開屬性頁) -> 配置屬性 -> 常規 -> 字符集
單前選中的應該是“使用Unicode字符集”,改爲“使用多字節字符集”
更改完後確定,即可