我决定为我的Qt应用程序测试sqlite db。
我已经使用适当的语句创建了sqlite db文件(创建表等,并插入了一些数据行)。
我的问题是,当我执行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()似乎不起作用。
有什么提示吗?
提前致谢,
Thodoris
ps我忘了写配置,所以:Qt 4.7.3,Windows 7,Visual Studio 2008
最佳答案
除了错误hexa,即使查询失败,query.isSelect()
也将始终返回true。您需要检查exec()
的结果:
QSqlQuery query;
query.prepare( "SELECT * FROM descriptors WHERE id = ?" );
query.bindValue( 0, idx ); // assuming idx is an integer/long/QVariant value
if( !query.exec() )
{
// Error Handling, check query.lastError(), probably return
}
// Note: if you don't return in case of an error, put this into the else{} part
while( query.next() )
{
int fff = query.value( 0 ).toInt();
}
关于qt - qt sqlite select语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6597659/