QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");//打开数据库驱动,即QSQLITE
db.setDatabaseName("user.db");//创建数据库的名称
QString dbPath = QCoreApplication::applicationDirPath() + "//user.db";//将使用的数据库文件和应用文件处于一个目录下。其中的QCoreApplication::applicationDirPath() 就是应用的文件夹路径,注意WIN下在数据库文件名前面要加“//”。
db.setDatabaseName(dbPath);

我们使用query.exec("select * from student");查询出表中所有的内容。其中的SQL语句“select * from student”中“*”号表明查询表中记录的所有属性。而当query.exec("select * from student");这条语句执行完后,我们便获得了相应的执行结果,因为获得的结果可能不止一条记录,所以称之为结果集。

结果集其实就是查询到的所有记录的集合,在QSqlQuery类中提供了多个函数来操作这个集合,需要注意这个集合中的记录是从0开始编号的。最常用的操作有:

  • seek(int n) :query指向结果集的第n条记录;
  • first() :query指向结果集的第一条记录;
  • last() :query指向结果集的最后一条记录;
  • next() :query指向下一条记录,每执行一次该函数,便指向相邻的下一条记录;
  • previous() :query指向上一条记录,每执行一次该函数,便指向相邻的上一条记录;
  • record() :获得现在指向的记录;
  • value(int n) :获得属性的值。其中n表示你查询的第n个属性,比方上面我们使用“select * from student”就相当于“select id, name from student”,那么value(0)返回id属性的值,value(1)返回name属性的值。该函数返回QVariant类型的数据,关于该类型与其他类型的对应关系,可以在帮助中查看QVariant。
  • at() :获得现在query指向的记录在结果集中的编号。

    需要特别注意,刚执行完

query.exec("select *from student");

这行代码时,query是指向结果集以外的,我们可以利用query.next()使得 query指向结果集的第一条记录。当然我们也可以利用seek(0)函数或者first()函数使query指向结果集的第一条记录。