User表中其中三项是UserID,UserPassword,Access,输入前两者,读出Access值,下面的部分代码 
if(mysql_real_connect(&mysql,"localhost","root","qwert","mydb",3306,NULL,0))
  {
        QMessageBox::critical(0,tr("登入."),tr("成功登入数据库."));
        char *ch_query="select UserAccess from Users where UserID=userID and UserPassword=userPassword";
        if(mysql_real_query(&mysql,ch_query,79)){
         MYSQL_RES *result;
         result=mysql_use_result(&mysql);
         MYSQL_ROW rowmysql_fetch_row(result);
         while(row=mysql_fetch_row(result))
         {
               access=row[0];
         }        }
         else
             QMessageBox::critical(0,tr("无法登入."),tr("请确认用户名密码是否正确."));
 }我错哪了??急求帮助,谢谢!!!C++mysql

解决方案 »

  1.   

    &mysql 不用取地址
    mysql_real_connect(a,server,user,password,database,0,NULL,0)
    mysql_real_query(a, cmd, strlen(cmd))
    res = mysql_store_result(a);
      

  2.   


    mysql是这么来的 
          MYSQL mysql;
         mysql_init(&mysql);我看到百科(http://baike.baidu.com/view/8038006.htm)里mysql_real_connect()的第一个参数是要已有MYSQL结构的地址
    而且我觉得mysql_real_connect()没问题,因为执行QMessageBox::critical(0,tr("登入."),tr("成功登入数据库."));弹出了对话框
    主要是接下来那个if语句,不管用户id和密码有没有输对都执行else的语句
    mysql_real_query()那句有什么问题??
    代码:
     MYSQL mysql;
         mysql_init(&mysql);  //数据库连接句柄    char *access;
        if(mysql_real_connect(&mysql,"localhost","root","qwert","mydb",3306,NULL,0))
      {
            QMessageBox::critical(0,tr("登入."),tr("成功登入数据库."));
            char *ch_query="select UserAccess from Users where UserID=userID and UserPassword=userPassword";
            if(mysql_real_query(&mysql,ch_query,strlen(ch_query))){
             MYSQL_RES *result;
             result=mysql_use_result(&mysql);
             MYSQL_ROW row=mysql_fetch_row(result);
             while(row=mysql_fetch_row(result))
             {
                   access=row[0];
             }        }
             else
                 QMessageBox::critical(0,tr("无法登入."),tr("请确认用户名密码是否正确."));
     }
      

  3.   

    课程设计啊,我要死撑下去,就是连mysql先把我弄得快疯了
      

  4.   

     MYSQL * con; //= mysql_init((MYSQL*) 0); 
    con = mysql_init((MYSQL*) 0);
    if ( con !=NULL && mysql_real_connect(con,dbip,dbuser,dbpasswd,dbname,3306/*TCP IP端口*/,NULL/*Unix Socket 连接类型*/,0/*运行成ODBC数据库标志*/) ) 刚百度的,不对内容的正确性负责
      

  5.   

    http://www.cnblogs.com/justinzhang/archive/2011/09/23/2185963.html一并把来源网站也发给你吧
      

  6.   

    这里我也看过,没加上libmysql.lib的时候。。改了下代码还是老样子。。
    其实我纠结的是if(mysql_real_query(&mysql,ch_query,strlen(ch_query))){}
      

  7.   

    mysql_library_init(0,NULL,NULL);
        MYSQL * mysql; //= mysql_init((MYSQL*) 0);
        mysql = mysql_init((MYSQL*) 0);  //数据库连接句柄
        mysql_options(mysql,MYSQL_SET_CHARSET_NAME,"gbk");
        char *access;
        if(mysql_real_connect(mysql,"localhost","root","qwert","mydb",0,NULL,0))
      {
            QMessageBox::critical(0,tr("登入."),tr("成功登入数据库."));
            const char *ch_query="select UserAccess from Users where UserID=userID and UserPassword=userPassword";
           if(mysql_real_query(mysql,ch_query,strlen(ch_query))){
             MYSQL_RES *result;
             result=mysql_use_result(mysql);
             MYSQL_ROW row=mysql_fetch_row(result);
             while(row=mysql_fetch_row(result))
             {
                   access=row[0];
             }        }
    //这里有什么问题吗??
             else
                 QMessageBox::critical(0,tr("无法登入."),tr("请确认用户名密码是否正确."));
     }
      

  8.   

    我无能为力,自己百度吧,Java连接MySQL是这个样子的try
    {
    Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection("jdbc:mysql://" + ip
    + "/information_release_system", user, password);
    } catch (ClassNotFoundException e)
    {
    e.printStackTrace();
    } catch (SQLException e)
    {
    e.printStackTrace();
    }话说Qt自带一些样例程序,你自己找一下
      

  9.   

    http://www.cnblogs.com/justinzhang/archive/2011/09/23/2185963.html
    自己个这个吧。比较详细,基本函数都写了
      

  10.   

    http://blog.csdn.net/jemlee2002/article/details/1523164
    这位高手封装了一个类,我也学着封装了一个,经过测试,没有问题。
      

  11.   

    谢谢楼上各位,不过我已经放弃用这个方法连接数据库。。找资料无能,搜索出来的基本不靠谱。。现在用得qt sql类里的方法,已经成功连上mysql,果然官方的帮助文档是相当靠谱的。。
    至于这里,应该是这句的问题:
    const char *ch_query="select UserAccess from Users where UserID=userID and UserPassword=userPassword";
    where里userID userPassword是C++变量,不能直接写入sql语句