MYSQL 数据库 不能插入数据

wencheng2998 2011-05-17 08:20:47
数据库的配置成功了,数据库也能够连接,数据库的数据甚至能查找,执行下面的代码是能够返回1~3列的数据的。
MYSQL_RES *result;
MYSQL_ROW row;
if(!(result=mysql_use_result(mysql)))
{
printf("查找失败");
}
while(row=mysql_fetch_row(result))
{
printf("%s %s %s",row[0],row[1],row[2]);
}

但是插入数据就是不行,而且插入语句我也在MYSQL里面测试了,是可行的。但是执行下面的代码,if语句为ture的,费解啊。
strSQL.Format(_T("insert into mytable([username],[visitelist],[remark])values( '%s ','%s ','%s ')"),strUsername,strList,strRemark);
if(mysql_real_query(mysql,(char*)(LPCTSTR)strSQL,(UINT)strSQL.GetLength())!=0)
{

printf("添加失败!");

}
然后用sprintf来实现也是达不到效果,数据库里面就是不添加新的数据!!!!
...全文
349 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wencheng2998 2011-05-17
  • 打赏
  • 举报
回复
使用多字符以后,去掉_T()问题就解决了。
一直用6.0 换了版本以后 就出现了这种问题。
很纳闷 为什么就不支持Unicode
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 'i' at line 1

在用Unicode的情况下,错误的意思好像是SQL语句出错~?
_free 2011-05-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wencheng2998 的回复:]
现在用sprintf方法都能实现了。。。
char ch_query2[200];
char g1[]="2";
char g2[]="wwwwwwwwwwwww";
char g3[]="mmmmmmmmmmmmmmm";
sprintf(ch_query2,"update mytable set visitelist='%s',remark='%s'where username='%……
[/Quote]

不想转的话可以设置vs2005使用多字符,

如果还失败的的话,就用mysql_error打印下日志,还有sql语句
wencheng2998 2011-05-17
  • 打赏
  • 举报
回复
现在用sprintf方法都能实现了。。。
char ch_query2[200];
char g1[]="2";
char g2[]="wwwwwwwwwwwww";
char g3[]="mmmmmmmmmmmmmmm";
sprintf(ch_query2,"update mytable set visitelist='%s',remark='%s'where username='%s'",g2,g3,g1);

if(mysql_real_query(mysql,ch_query2,(UINT)strlen(ch_query2))!=0)
{
printf("更新失败!");
}

mysql_close(mysql);


但是一旦用到CString 在Visual stdio 2005中就要用_T()转才行,而且转了 运行没有效果!!!!!
_free 2011-05-17
  • 打赏
  • 举报
回复

strSQL.Format(_T("insert into mytable([username],[visitelist],[remark])values( '%s ','%s ','%s ')"),strUsername,strList,strRemark);
if(mysql_real_query(mysql,(char*)(LPCTSTR)strSQL,(UINT)strSQL.GetLength())!=0)
{

printf("%s", mysql_error(MYSQL *mysql) );
printf("添加失败!");

}

_free 2011-05-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wencheng2998 的回复:]
后来我用sprintf方面实现了数据的插入。。
因为我的这个程序是win32的控制台程序,为了用CString类,我引用了<atlstr.h> 头文件。。
但是在strSQL.Format(_T("insert into mytable([username],[visitelist],[remark])values( '%s ','%s ','%s ')"),strUsername,strL……
[/Quote]

连接mysql的字符集和sql的字符集语句的一致吗??
如果不一直的话,sql中包含中文,会失败

wencheng2998 2011-05-17
  • 打赏
  • 举报
回复
后来我用sprintf方面实现了数据的插入。。
因为我的这个程序是win32的控制台程序,为了用CString类,我引用了<atlstr.h> 头文件。。
但是在strSQL.Format(_T("insert into mytable([username],[visitelist],[remark])values( '%s ','%s ','%s ')"),strUsername,strList,strRemark);
用了_T()实现了Unicode 的转换才能编译成功。。。所以问题是出在这吗? 求解~?

4,011

社区成员

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

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