QSqlQuery 执行完 SELECT 语句后,调用.size函数总是返回-1……找不到原因,求助
代码如下:
bool OpenTempSeriesDB( QString strDBFile)
{
QSqlDatabase pTempDB = QSqlDatabase::addDatabase("QSQLITE", "SeriDatabase");
pTempDB.setHostName("localhost");
pTempDB.setDatabaseName( strDBFile ); (strDBFile是指定的数据库文件)
if ( !pTempDB.open() )
{
qDebug()<<"连接数据库失败,请检查数据库设置!";
return false;
}
return true;
}
if( !OpenTempSeriesDB(strDBFile, bUseDefaultSeriesDB) )
{
return false;
}
// 数据库操作
QSqlQueryRS( QSqlDatabase::database( "SeriDatabase" ) );
RS.exec("SELECT COUNT(UID) FROM Tables WHERE UID = '123456'" )
RS.size() == -1 ( 总是返回 -1 , 找不到原因啊 )
QSqlQuery .size()返回-1
[解决办法]
是-1.你往后挪一个位置就行了。执行RS.next();这样再使用就行了
[解决办法]
给你贴段代码上来
int DBAdvertise::getAdvertiseCount()
{
QString sql;
QSqlQuery query(DB::m_db);
bool result;
int count = 0;
QString time = QDate::currentDate().toString("yyyy-MM-dd");
sql.append("SELECT count(*) FROM ");
sql.append(ADVERTISE_TABLE_NAME);
sql.append(" WHERE time=");
sql.append(DB::addYinHao(time));
result = query.exec(sql);
query.next();
count = query.value(0).toInt();
return count;
}
我就是这么用的
[解决办法]
可能的原因如下:
1. 数据库的连接是否为有效连接。SQLITE数据库无论路径是否有效,open总是返回true。如果在windows系统下,注意路径字符串的传入等是否正确。
2. SQL语句是否有误。建议先在sql工具下测试运行一遍,是否能正常运行。