Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
QtSQLite选择语句_Qt_Sqlite_Select - Fatal编程技术网

QtSQLite选择语句

QtSQLite选择语句,qt,sqlite,select,Qt,Sqlite,Select,我决定为我的Qt应用程序测试sqlite db 我已经用适当的语句创建了sqlite db文件(CREATETABLE等,并插入了一些数据行)。 我的问题是,当我执行select语句时,我没有得到任何记录 这是我使用的代码: qq.sprintf("SELECT * from descriptors WHERE descriptors.id=%d ",idx); query.exec(qq); if( query.isSelect() ){ while (query.next()){

我决定为我的Qt应用程序测试sqlite db

我已经用适当的语句创建了sqlite db文件(CREATETABLE等,并插入了一些数据行)。 我的问题是,当我执行select语句时,我没有得到任何记录

这是我使用的代码:

qq.sprintf("SELECT * from descriptors WHERE descriptors.id=%d ",idx);
query.exec(qq);
if( query.isSelect() ){
    while (query.next()){

    int fff = query.value(0).toInt();
}}

问题是我从来没有进入while循环。query.next()似乎不起作用

有什么提示吗? 提前感谢,, 多丽丝


p、 我忘了写我的配置,所以:Qt 4.7.3、windows 7、visual studio 2008

除了hexa发布的错误之外,
query.isSelect()
即使查询失败也将始终返回true。您需要检查
exec()
的结果:

QSqlQuery查询;
准备(“从id=?”的描述符中选择*”;
query.bindValue(0,idx);//假设idx是一个整数/长/QVariant值
如果(!query.exec())
{
//错误处理,检查query.lastError(),可能返回
}
//注意:如果发生错误时没有返回,请将其放入else{}部分
while(query.next())
{
int fff=query.value(0.toInt();
}

在我的例子中,对QSQL查询的反向迭代是有效的。我认为这可能是QSQLite驱动程序实现中的一个bug

QSqlQuery q = db.exec("SELECT * FROM Table");
if (q.last()) {
    do {
        // Do something with row...
    } while (q.previous());
}

您不应该这样构造查询,否则会再次发生。谢谢你的回答和漫画。我在mysql中使用了这种查询结构,效果很好。我会尝试使用绑定来看看会发生什么,当然我会更新它,它会工作得很好。直到鲍比的桌子出现。工作正常并不意味着就没事。这就像运行停止标志。它一直工作到有人死。谢谢你的回答,但这也不起作用。我想这不是语法问题,而是其他问题。。。我会让你们知道我的结果。再次谢谢,谢谢你。有一系列问题。首先是绑定,其次是未正确构造的数据库文件(保存为字符串的int)。再次感谢你帮我解决这个问题