浏览:

             在QSqlQuery类中当执行exec()后会把指针放在记录集中第一个记录之上,所以需要调用QSqlQuery::next()来获取第一个数据,下面通过循环体来遍历所有表中的数据。

        

 while(query.next())
{
            QString name = query.value(0).toString();
           qDebug()<<name;
 }

QSqlQuery::value()函数得到当前记录区域中的数据,QSqlQuery::value()默认返回的是一个QVariant类型,Qt提供了几种可远的类型支持,它们是C++的基本的类型,如:int,QString,QByteArray。对于不同类型的转换需要使用Qt提供的函数来实现,例如QVariant::toString()与QVaniant::toInt().

删除: 

QSqlQuery query;
bool  value;
value = query.exec(“delete from book where ID = “‘+id+”’”);
 if(value)
      QMessageBox::information(this"notice","add sucessful!");
 else
     QMessageBox::information(this"notice","add failed!");

修改:

QSqlQuery query;
bool  value;
value = query.exec(“update book name set name=“‘+name+'"”);
if(value)
     QMessageBox::information(this"notice","add sucessful!");
 else
     QMessageBox::information(this"notice","add failed!");

 

使用了prepare()函数:

 

query.prepare("insert into student(id, name)  values (?, ?)");
query.bindValue(0, 5);
query.bindValue(1, "sixth");
query.exec();

也可以利用addBindValue()函数,这样就可以省去编号,它是按顺序给属性赋值的,如下:
query.prepare("insert into student(id, name)  values (?, ?)");
query.addBindValue(5);
query.addBindValue("sixth");
query.exec();

 

QSqllite好像不支持size函数,在StackOverflow上看到一个方法可以达到效果:

QSqlQuery q;
q.exec("select * from table");
q.last();
qDebug() << q.at() + 1;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

     

 

相关文章:

  • 2021-07-28
  • 2022-12-23
  • 2022-12-23
  • 2021-10-08
  • 2022-02-10
  • 2021-12-27
猜你喜欢
  • 2021-10-25
  • 2021-09-10
  • 2022-12-23
  • 2021-07-19
  • 2021-05-17
  • 2021-09-14
相关资源
相似解决方案