帮帮忙,急用!!!我查询了数据库中这个表但是它里面什么数据都没有,为什么查询的结果还是true呢?

为什么wn_user_ip表中没有这个IP号,确切的说什么数据都没有,怎么查询结果还是true呢?这点我一直想不通。。。
下面使部分代码:
QSqlDatabase db = QSqlDatabase::database(DATABASE_NAME);
QSqlQuery query(db); //创建查询数据库对象
QString sql="select * from wn_user_ip where user_ip = ' "+tmpUser.getUserIp()+" ' ";
bool isRight = query.exec(sql); //查询数据库
// qDebug() << isRight;
if (!isRight)
{
QMessageBox::information(0, QString::fromUtf8("错误"), QString::fromUtf8(“访问数据库失败”);
}

你的问题是出在你的字段检索字段上,原因是因为你的查询语句出现了问题,一旦tmpUser.getUserIp()的查询值为空值(NULL)或者其他字符(例如:or,union等),带着这样的语句去查询数据库,而此时你的wn_user_ip没有任何的信息,系统默认为空值(NULL),所以这样出现的结果当然为True了。。。。追问

你说的对,我还用了一个并不存在的IP号测试了一下,结果还是为真。数据库这块我是刚刚自学了点能力实在有限,你能具体说一下我的检索字段哪块出现了问题,导致查询结果始终为真,我用的是SQLite数据库

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-07
你吧sql语句打印出来复制,直接到数据库中执行看能否执行成功。
如果查询结果是空的有没有报错。

那么肯定是这个问题,你的那个isRight只是能判断你的sql语句对不对,有没有出错,这样看来你如果查出来是空的但是sql语句是对的,所以要判断查出来记录的条数是不是0
php里面有个count()函数,统计有多少条数据,

祝你好运本回答被提问者采纳
相似回答