qt中如何用qsqlquery动态的查询数据

时间:2021-08-19 10:45:23
代码如下
QString name=te->text();
QString name1=te1->text();

QSqlQuery query;
query.exec("");

我想用name,name1的值作为条件直接在数据库中查找,请问怎么写query。exec这一行代码

4 个解决方案

#1



QString name=te->text();
QString name1=te1->text();
QString sql= QString("select * from %1 where name=%2")
                     .arg(name).arg(name1);
QSqlQuery query;
query.exec(sql);

#2


运行还是不对呀,数据库中有数据,却查询不到

#3


楼主可以多看看sqlite方面的语法,一楼的语法也有点问题,估计name应该是字段,不是一个表名,楼主说一下你的表名是什么,还有查询是按照name 和name1同时查找还是分别查找。
分别查的话就是下面这样的:
        query.prepare("select ... from your table where name=:Name");
        query.bindValue(":Name",name);
        query.exec();
        query.next();

如果是同时查就是下面这样:
        query.prepare("select ... from your table where name=:Name and name=:Name1");
        query.bindValue(":Name",name);
        query.bindValue(":Name1",name1);
        query.exec();
        query.next();

这是我常用的查询方式,还有,下次楼主最好是把表名啊,你要选的字段名啊什么的都说一下,这样大家也好帮你解决问题。
最后说一句,记得结贴啊骚年!!!昨天你还有个帖子没结帖!!!

#4


引用 3 楼  的回复:
楼主可以多看看sqlite方面的语法,一楼的语法也有点问题,估计name应该是字段,不是一个表名,楼主说一下你的表名是什么,还有查询是按照name 和name1同时查找还是分别查找。
分别查的话就是下面这样的:

C/C++ code
        query.prepare("select ... from your table where name=:Name");
       ……

同意。
		QSqlQuery qry("SELECT * FROM Admins WHERE Name = :name and password = :password", QSqlDatabase::database());
qry.bindValue(":name", username);
qry.bindValue(":password", name1);
qry.exec();

#1



QString name=te->text();
QString name1=te1->text();
QString sql= QString("select * from %1 where name=%2")
                     .arg(name).arg(name1);
QSqlQuery query;
query.exec(sql);

#2


运行还是不对呀,数据库中有数据,却查询不到

#3


楼主可以多看看sqlite方面的语法,一楼的语法也有点问题,估计name应该是字段,不是一个表名,楼主说一下你的表名是什么,还有查询是按照name 和name1同时查找还是分别查找。
分别查的话就是下面这样的:
        query.prepare("select ... from your table where name=:Name");
        query.bindValue(":Name",name);
        query.exec();
        query.next();

如果是同时查就是下面这样:
        query.prepare("select ... from your table where name=:Name and name=:Name1");
        query.bindValue(":Name",name);
        query.bindValue(":Name1",name1);
        query.exec();
        query.next();

这是我常用的查询方式,还有,下次楼主最好是把表名啊,你要选的字段名啊什么的都说一下,这样大家也好帮你解决问题。
最后说一句,记得结贴啊骚年!!!昨天你还有个帖子没结帖!!!

#4


引用 3 楼  的回复:
楼主可以多看看sqlite方面的语法,一楼的语法也有点问题,估计name应该是字段,不是一个表名,楼主说一下你的表名是什么,还有查询是按照name 和name1同时查找还是分别查找。
分别查的话就是下面这样的:

C/C++ code
        query.prepare("select ... from your table where name=:Name");
       ……

同意。
		QSqlQuery qry("SELECT * FROM Admins WHERE Name = :name and password = :password", QSqlDatabase::database());
qry.bindValue(":name", username);
qry.bindValue(":password", name1);
qry.exec();