• 6171阅读
  • 3回复

QT连接SQLITE无法成功登陆验证问题 [复制链接]

上一主题 下一主题
离线wter27
 
只看楼主 倒序阅读 楼主  发表于: 2011-02-01
db.lastError()后的结果如下,这个什么原因呢?
QSqlError(-1, "", "")

上面这个理解了,其实是没有错误
但是在连接SQLITE的时候登陆有问题。即在先登陆正确的时候,显示是正确,如果登陆错误的时候,也是正确。如果先登陆错误,则显示的是错误,如果后再登陆正确的话,那么又都显示是正确的了。这个什么问题呢?是不是SQL操作有问题呢?

  1. database var_tmp;    if((ui->lineEdit_user->text().isEmpty())||(ui->lineEdit_pass->text().isEmpty()))    
  2. {    qDebug()<<"DOSE NOT INPUT THE USERNAME AND PASSWORD.";  
  3. return false;  
  4. }  
  5.   else  
  6.   {        if(var_tmp.opendb("QSQLITE","localhost","./data/user.mdb","","",1))//如果打开数据库为真,则进行下面的工作      
  7.   { QString  var_s_user,var_s_pass,var_s_sql;          
  8. var_s_user=ui->lineEdit_user->text();          
  9. var_s_pass=ui->lineEdit_pass->text();          
  10. QSqlDatabase var_db = QSqlDatabase::database();          
  11. QSqlQuery query_cmd;          
  12. var_s_sql="select username from user where username = "+var_s_user +" and password="+var_s_pass+";";          
  13. query_cmd.exec(var_s_sql);            
  14. QSqlRecord rec = query_cmd.record();          
  15. qDebug()<<query_cmd.lastError();          
  16. if(!rec.isEmpty())          
  17. {
  18. qDebug()<<rec.count();
  19. qDebug()<<"YOU INPUT THE RIGHT USERNAME AND PASSWORD.";
  20. //qApp->aboutQt();
  21. var_db.close();    
  22.     return true;          
  23. }          
  24. else          
  25.   {          
  26. qDebug()<<"YOU INPUT THE WRONG USERNAME AND PASSWORD.";          
  27.   return false;            
  28. }      
  29. }        
  30. else      
  31. {        
  32. qDebug()<<"DOSE NOT SET THE RIGHT CONNECT TO THE DATABASE.";      
  33. return false;      
  34. }  
  35. }

[ 此帖被wter27在2011-02-01 17:40重新编辑 ]
离线wter27
只看该作者 1楼 发表于: 2011-02-01
回 楼主(wter27) 的帖子
问题现在好象比较清楚了,就是query_cmd.record().count()的操作,不论sql到什么结果返回值都是1,这个正常么?
离线XChinux

只看该作者 2楼 发表于: 2011-02-01
QString strSql = "SELECT .....";
query.exec(strSql);
while (q.next())
{
       QString strUser = q.value(0).toString().trimmed();
       QString srtPass = q.value(1).toString().trimmed();
       xxxxxxxxxxxxxx
}
直接这样处理简单。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线wter27
只看该作者 3楼 发表于: 2011-02-01
回 2楼(XChinux) 的帖子
我想知道,这个只是取出值,但是那个怎么判断呢?
难道要看strUser 是否为空来判断?
快速回复
限100 字节
 
上一个 下一个