wxDEV c++,已经连接mysql,程序总是有问题,求大神帮忙。(数据库mydb001,表tb1,表final,程序是要从表tb

wxDEV c++,已经连接mysql,程序总是有问题,求大神帮忙。(数据库mydb001,表tb1,表final,程序是要从表tb1中取出word和code的字符串存入两个数组,然后根据word和code内容修改表final的内容,编译后停留在“成功2”。代码如下:

#include <cstdlib>
#include <iostream>
using namespace std;
#include <windows.h>
#include "mysql.h"
#include <stdio.h>
#include <stdlib.h>
#include <winsock.h>
#include <string.h>
int main()
{
MYSQL mysql; //mysql连接
MYSQL_RES *res; //这个结构代表返回行的一个查询结果集
MYSQL_ROW row; //一个行数据的类型安全(type-safe)的表示

char *query;
char *wdq;
char *cdq; //查询变量
char *write1;
char *write2;//写入变量
char **wd;//设置word结果存放
char **cd;//设置code结果存放
int t,i,xres;

mysql_init(&mysql);
if (!mysql_real_connect(&mysql,"localhost", "root", "", "mydb001",3306,NULL,0))
{
printf( "连接数据库错误:%s\n",mysql_error(&mysql));
} else
printf("连接中...\n");
query="SET CHARACTER SET GBK"; //设置编码
t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));
if(t)
{
printf("编码设置失败\n");
}

wdq="select word from tb1";

t=mysql_real_query(&mysql,wdq,(unsigned int)strlen(wdq));
if(t)
{
printf("执行查询word时出现异常: %s",mysql_error(&mysql));
}else
printf("[%s] 构建成功 \n",&wdq);
res=mysql_store_result(&mysql);
while(row=mysql_fetch_row(res))
{
for(t=0;t <mysql_num_fields(res);t++)
{
wd[t]=row[t];
}

} printf("成功1\n");

cdq="select code from tb1"; //从表tb1中查询code字段

t=mysql_real_query(&mysql,cdq,(unsigned int)strlen(cdq));
if(t)
{
printf("执行查询code时出现异常: %s",mysql_error(&mysql));
}else
printf("[%s] 构建成功 \n",&cdq);
res=mysql_store_result(&mysql);

while(row=mysql_fetch_row(res))
{
for(t=0;t <mysql_num_fields(res);t++)
{
cd[t]=row[t];

}

}
printf("成功2\n");

printf("%s: ",cd[2]);

for(i=0;i<t;i++)
{
sprintf(write1,"UPDATE final SET %s = \'0\'", cd[i]);
sprintf(write2,"UPDATE final SET %s = \'1\' WHERE word LIKE \'%%%s%%\'",cd[i],wd[i]);

xres=mysql_query(&mysql,write1);

if(xres)
{printf("update成功1");}
else {printf("error1");}
xres=mysql_query(&mysql,write2);
if(xres)
{printf("update成功2");}
else {printf("error2");}

}
//mysql_free_result(res);

scanf("%d",&t);
return 0;

}
中间那句:printf("%s: ",cd[2]); 是调试后加的,没有输出任何结果。
printf("[%s] 构建成功 \n",&wdq);这句输出[ ]中是乱码

首先你先把 sql语句在控制台 或者 一些mysql工具里跑一下, 看看结果集是否正确.

没有任何 输出,那就是 没数据啊.

不知道你对 map vector 这些了解不?
我写了一个 mysql 封装. 你可以参考看
http://wenku.baidu.com/view/68dd062ca5e9856a561260e8.html追问

mysql命令行执行完全没有问题,但是我对sprintf(write2,"UPDATE final SET %s = \'1\' WHERE word LIKE \'%%%s%%\'",cd[i],wd[i]);这句的转义后的字符什么的没信心。

追答

printf write2 看看出来 就知道对不对啦. 单引号 不需要转义

温馨提示:答案为网友推荐,仅供参考
相似回答