只是需要修改表中某个字段的值,并不需要修改全部。在MySQL里面用update命令就可以。比如我要修改表collector中的DtuState字段,让它为1,可以这样:update collector set DtuState=1 where Id=5;如果在VC环境下怎么修改?需要用到什么函数啊  
请教专家 谢谢

解决方案 »

  1.   

    一样啊,C中通过MYSQL的C API或者C++ 的API也可以执行SQL语句啊。参考手册中这个函数MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  2.   

    谢谢
    不过这个函数是查询数据吧不是我要的修改数据的函数啊 
    MYSQL的C API或者C++ 的API这又没有谁有中文文档啊 
      

  3.   

    mysql_real_query(&mysql,"update .......", lengthOfSql)
      

  4.   

    大大 还是不行啊
    char *stmt = "update collector set DtuState=2 where Id=5"; int a=mysql_query(temp->m_conn,stmt);
    调适的时候a的返回值是0,也就是说函数调用成功 但是数据库一点反应都没有。。郁闷
      

  5.   

    update collector set DtuState=2 where Id=5直接到数据库中去执行,看什么结果,是否有符合条件的记录?
    另外你是否打开事务?
      

  6.   

    void CDataManageDlg::OnBnClickedBtnQury()//实现查询,并显示在listctrl控件上
    {

    m_listctrl.DeleteAllItems();//m_listctrl是控件关联变量
    char *ch_query;
    temp=g_myDB.m_pConn; ch_query="select * from collector";
    mysql_query(temp->m_conn, "set names 'gb2312'");
    if(mysql_real_query(temp->m_conn,ch_query,(UINT)strlen(ch_query))!=0)
    {
    AfxMessageBox("数据库中表格出错");  }
        
    CString str;
    MYSQL_RES *result;
    MYSQL_ROW row;
    if(!(result=mysql_use_result(temp->m_conn)))

    AfxMessageBox("读取数据集失败"); 
    }
    int i=0;
    while(row=mysql_fetch_row(result))
    {
    str.Format("%s",row[1]);
    m_listctrl.InsertItem(i,str);
    str.Format("%s",row[2]);
    m_listctrl.SetItemText(i,1,str);
    i++;

    }
    mysql_free_result(result);
       
    }
    void CDataManageDlg::OnBnClickedBtnStop()
    {
    char *stmt = "update collector set DtuState=2 where Id=5";     int a=mysql_real_query(temp->m_conn,stmt,(UINT)strlen(stmt));//表中数据并没有变化
        if(a!=0)
    {
               AfxMessageBox("产生了错误");
             }}
    数据查询的时候listctrl控件能显示数据 在MySQL直接执行update collector set DtuState=2 where Id=5;能修改成功


      

  7.   

    在你的代码后头加上:
    char msg[256];
    sprintf(msg, "%ld collector updated", (long) mysql_affected_rows(temp->m_conn));
    AfxMessageBox(msg);
    看看有多少行产生了修改(当前会话)
    接着,
    char* sql_commit = "commit";
    mysql_real_query(sql_commit, strlen(sql_commit));执行完这些之后,你再看看数据库里边发生变化了没?我估计你的连接初始时,将自动提交关闭了。
      

  8.   

    谢谢!
    1 collector updated
    可以修改了 
    “我估计你的连接初始时,将自动提交关闭了。”这个能详细说下吗 万分感谢~
    后面修改的代码是什么意思啊 请教下~