我想获取表格中的总行数。我怎样才能做到这一点?
我编写的代码如下:
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("Dictionary");
db.setUserName("root");
db.setPassword("cinesoft");
bool ok = db.open();
int ID;
//SELECT COUNT(*) FROM icecream
QString IDnosql="SELECT * FROM Dictionary.TABLE_ENGLISH";
if(ok)
{
QSqlQuery IDquery(db);
IDquery.prepare(IDnosql);
int Id=IDquery.numRowsAffected();
IDquery.exec();
// int Id=IDquery.numRowsAffected();
QMessageBox::information(0,"sucess",QString::number(Id));
}
我使用count命令。我希望得到表中的总行数并存储到整数变量。
答案 0 :(得分:6)
您可以使用QSqlQuery
命令准备COUNT
:
QSqlQuery q;
q.prepare(QString("SELECT COUNT (*) FROM %1").arg(tableName));
q.exec();
int rows= 0;
if (q.next()) {
rows= q.value(0).toInt();
}
查看QSqlQuery
了解详情
答案 1 :(得分:4)
为什么不使用查询SELECT COUNT(*) from Dictionary.TABLE_ENGLISH
- 这将为您提供表格中的行数。然后从结果集中获取此值并将其存储在整数变量中。
答案 2 :(得分:1)
使用COUNT语句时,您可以像选择单个值一样使用QSqlQuery :: value(int index):
QString IDnosql="SELECT COUNT( * ) FROM Dictionary.TABLE_ENGLISH";
if(ok)
{
QSqlQuery IDquery(db);
IDquery.prepare(IDnosql);
if( !IDquery.exec() )
{
// TODO: perform error handling here!
}
if( !IDquery.next() )
{
// TODO: Error handling: Query did not return a result (no row, which should not be possible when using a count statement as you would always get 1 row)
}
int Id = IDquery.value( 0 ).toInt();
QMessageBox::information(0,"sucess",QString::number(Id));
}
答案 3 :(得分:0)
要获取表格A
中的总行数,您只需
SELECT count(*) from A;
然后你需要将结果转换为整数。