VC2010 MySql 数据库 mysql_real_query 失败

hili210 2013-06-27 01:09:12
已连接成功,执行下面代码出现失败:
并且尝试过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;



提示连接成功,没问题

.
...全文
458 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
演绎华丽奇迹 2015-01-15
  • 打赏
  • 举报
回复
mysql_free_result()
hili210 2013-06-27
  • 打赏
  • 举报
回复
OK谢谢了,程序设置了GBK后字段的编码也要设置下
sumos 2013-06-27
  • 打赏
  • 举报
回复
参考这个高手的程序 http://blog.csdn.net/jemlee2002/article/details/1523164
hili210 2013-06-27
  • 打赏
  • 举报
回复
貌似有点明白了,好像字段名不能为中文,不过现在存进去的字符串中文是乱码,可能是数据库语言设置问题
hili210 2013-06-27
  • 打赏
  • 举报
回复
返回的是1 语句的话前面固定测试了最简单的insert into text(标题,日志) VALUES('test 测试', 'test 测试') 也不行,VC6和MySql Front 执行没问题 mysql_error得到的是: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '标题,日志) VALUES('test 测试', 'test 测试')' at line 1
sumos 2013-06-27
  • 打赏
  • 举报
回复
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函数最后一个参数是用来保存错误信息的,打印这个字符串看看是什么错误
zgl7903 2013-06-27
  • 打赏
  • 举报
回复
1 设个断点看 strMySql 是多少? 2 看 mysql_real_query 返回值是多少

4,018

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧