问一个关于mysql的问题:mysql_query 与 mysql_real_query的区别? 也就是什么时候用第一个,什么时候用第二个?帮助文档是这样说的 :
两者的差别在于,mysql_query()预期的查询为指定的、由Null终结的字符串,而mysql_real_query()预期的是计数字符串。感觉说的没有什么意义; 都是要执行整条语句的; 请问大家都是如何用的?
两者的差别在于,mysql_query()预期的查询为指定的、由Null终结的字符串,而mysql_real_query()预期的是计数字符串。感觉说的没有什么意义; 都是要执行整条语句的; 请问大家都是如何用的?
另外 mysql_real_query() 会比mysql_query() 略快一点儿。因为它不去检查你的SQL语句长度是多少。
而用 mysql_real_query 却返回错误, 不知道这是为什么?
你的调用方法估计不对。
int mysql_real_query(MYSQL *mysql, const char *stmt_str, unsigned long length) 你的语句是什么?
在执行这一条语句的时候
sprint_s(sql, _T("insert into user(user_name) values('%s')"),_T("张三"));用mysql_query没问题 可以正常的写入到数据库
可是 用 mysql_real_query 却返回这个错误ERROR 1064 : 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 '' at line 1" char [512]请问这是什么原因呢
这样用的
MYSQL *pdb = m_pConn->GetDBHandle();
mysql_real_query(pdb, pszSql, (unsigned long)_tcsclen(pszSql));//pszSql 是sql语句
int mysql_real_query(MYSQL *mysql, const char *stmt_str, unsigned long length) 这个length 没写对,不过没看到你的代码之前,只是猜测。问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧)
我刚调试了一下
pszSql的值为 0x0012f3ec "insert into user(user_name) values('天')" const char *(unsigned long)_tcsclen(pszSql) 的值为 39好像没什么问题啊
12345678901234567890123456789012345678901234567890
建议你测量一下这个字符串的长度。(贴到记录本中一看就明白了) 希望它是 39, 注意你的中文字符是两个字节。
果然是长度的问题; 用_tcsclen获取字符串长度时, 汉字的长度是按1算的多谢了