if(m_listCtrl.GetItemCount()==0)
{
MessageBox(_T("没有数据要存储!!"));
return;
}
u_int i;
MYSQL *db;
db=mysql_init(0);//初始化数据库
CString str1,str2,str3,str4,str5,str6,str7,str8,sqls;

if(mysql_real_connect(db,"localhost","root","123","test",3306,NULL,0))//连接数据库
{
for(i=1;i<=npkt;i++)
{
str1=m_listCtrl.GetItemText(npkt-i,0);
str2=m_listCtrl.GetItemText(npkt-i,1);
str3=m_listCtrl.GetItemText(npkt-i,2);
str4=m_listCtrl.GetItemText(npkt-i,3);
str5=m_listCtrl.GetItemText(npkt-i,4);
str6=m_listCtrl.GetItemText(npkt-i,5);
str7=m_listCtrl.GetItemText(npkt-i,6);
str8=m_listCtrl.GetItemText(npkt-i,7); //把列表中的数据插入数据库中
sqls="INSERT INTO sniffer VALUES('%s','%s','%s','%s','%s','%s','%s','%s')",str1,str2,str3,str4,str5,str6,str7,str8;
   
}
MessageBox(_T("存储成功!"));
}
else
{
MessageBox(_T("不能连接到数据库!"));
return;
}
编译通过,但没有在数据库表中添加数据。使用的是VC2010,请问是怎么回事??

解决方案 »

  1.   

    代码里,你只是准备好了sql语句,但是并没有执行sql语句,当然数据库表中没有数据了。
      

  2.   

    if (mysql_query(db,sqls))
    {
        return FALSE;
    }return TRUE;
      

  3.   

    mysql_query(db,sqls) 这句在VC2010里编译不通过,
    Error 不存在从CString到const char*的适当转换函数
    这是怎么回事?
      

  4.   

    error C2664: “mysql_query”: 不能将参数 2 从“wchar_t *”转换为“const char *”
      

  5.   

    你的工程的字符集是UNICODE的,在工程属性里设置为多字节的就可以了
      

  6.   

    改为多字节,出现一大串 “warning C4091: “typedef ”: 没有声明变量时忽略” 这种警告
      

  7.   


    sqls.Format("INSERT INTOsnifferVALUES(('%s','%s','%s','%s','%s','%s','%s','%s')",str1,str2,str3,str4,str5,str6,str7,str8);
     mysql_query(db,(char *)(LPCTSTR)sqls);
    这样能编译成功,但数据库里还是没有,怎么办?
      

  8.   

    mysql_query(db,(char *)(LPCTSTR)sqls);
    这条语句能成功执行吗?如果不能成功执行,则用
    char* errMsg = mysql_error(db);
    获取错误信息,看看是什么错误!
      

  9.   

    if (0 != mysql_library_init(0,NULL,NULL))//初始化数据库
    {
    return FALSE;
    } if (NULL == mysql_init (db)) // 初始化mysql连接结构体
    {
    return FALSE;
    } if (0 != mysql_options(db,MYSQL_SET_CHARSET_NAME,"gbk"))//设置字符集,用于处理中文
    {
    return FALSE;
    } return TRUE;用如上语句来初始化数据库和连接