读书人

VC2010 MySql 数据库 mysql_real_quer

发布时间: 2013-07-04 11:45:40 作者: rapoo

VC2010 MySql 数据库 mysql_real_query 失败
已连接成功,执行下面代码出现失败:
并且尝试过CStringA、CString(转为Unicode char*、数组)等各种方法
输出这句失败的SQL,去MySql Front 中执行成功没问题。
而且我在VC6中执行是没问题的(感觉不太像是字符串的问题,因为试过各种字符串变量和转换,有些转换都是在Unicode项目中实践和使用过的)
请教各位高手



// 处理影响SQL语句的字符串
m_strOldTitle.Replace(L"'", L"\\'");
m_strOldText.Replace(L"'", L"\\'");

CStringA strMySql("insert into text(标题,日志) VALUES('");
strMySql += m_strOldTitle;
strMySql += "', '";
strMySql += m_strOldText;
strMySql += "')";

if( mysql_real_query(&mysql,strMySql, strMySql.GetLength()) != 0 )
//if( mysql_real_query(&mysql,(char*)(LPCTSTR)strMySql, (UINT)strMySql.GetLength()) != 0 )
{
CString strMessage(L"日志保存到MySql数据库失败:");
strMessage += strMySql;
m_ctrlEditLog.AddLog(strMessage);
}




我是用如下语句进行连接:


mysql_init (&mysql);
if( !mysql_real_connect(&mysql, szHost, szUser, szPassword, szDatabase, _ttoi(strPort), NULL, 0) )
{
// mydb为你所创建的数据库,3306为端口号,可自行设定
AfxMessageBox(L"MySql 数据库连接失败!");

return FALSE;
}
else
{
m_ctrlEditLog.AddLog(L"√ MySql 数据库 连接成功");

// 标记为TRUE
m_bIsStarMySql = TRUE;
}

return TRUE;



提示连接成功,没问题

. MySQL 数据库 VS2010
[解决办法]
1 设个断点看 strMySql 是多少?
2 看 mysql_real_query 返回值是多少
[解决办法]
CStringA?strMySql("insert?into?text(标题,日志)?VALUES('");
????????strMySql?+=?m_strOldTitle;
????????strMySql?+=?"',?'";
????????strMySql?+=?m_strOldText;
????????strMySql?+=?"')";
这一段可以用CStringA.Format来优化一下

在mysql_real_query之前写执行mysql_real_query("set name gbk");设置字符集

遇到错误时,mysql_real_query函数最后一个参数是用来保存错误信息的,打印这个字符串看看是什么错误

读书人网 >VC/MFC

热点推荐