void GetP::Delete(CString name){
CString strSQL;
strSQL.Format("delete from mytable where name=\'%s\'",name);
if(mysql_real_query(&mysql,(char*)(LPCTSTR)strSQL,(UINT)strSQL.GetLength())!=0)
AfxMessageBox("删除失败");
else
AfxMessageBox("删除成功");
}
当把名字传进来后为什么不能删除呢,弹出删除失败。并且数据库以连接。
mysql_free_result(result); 加上这句话就好了
估计还是SQL语句组合不对,可以打印出来直接数据库中执行
参考用VS2010使用C++写MySQL程序,使用mysql_real_query总弹错误提示!
VC6默认是MBCS,VC2010默认是UNICODE
(char*)(LPCTSTR)strExecuteSQL
就是将wchar_t*强制转换成char*,所以语句已经变成乱码
用CStringA代替CString...
你输出一下mysql_real_query的返回值,看看是什么错误,如果你的错误和上面的引用是一样的,那么你用CStringA代替CString试一下。
mysql_real_query()
参考VC2010 MySql 数据库 mysql_real_query 失败
你的mysql数据库的字符集是什么?如果是gbk的,试试下面的方法,如果是其他的,把下面的gbk改成相应的字符集
在mysql_real_query之前写执行mysql_real_query("set name gbk");设置字符集
参考一个简单用c和mysql的示范程序
在你的代码里面加一个宏
#define error(x) printf("ERROR %d: %s\n", mysql_errno(x), mysql_error(x))
然后在mysql_real_query之后调用error(mysql); ,看看错误的msg是什么。