关闭

QT笔记:数据库总结(一)

发表于:2013-7-05 10:01

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:vloong    来源:51Testing软件测试网采编

  三、批量插入到数据库中

QSqlQuery query;
query.prepare(“insert into student values (?, ?)”);
QVariantList names;
names << "小王" << "小明" << "小张" << "小新"; // 如果要提交空串,用QVariant(QVariant::String)代替名字
query.addBindValue(names);
QVariantList ages;
ages << 11 << 13 << 12 << 11;
query.addBindValue(ages);
if (!q.execBatch()) //进行批处理,如果出错就输出错误
qDebug() << q.lastError();

  查询数据库操作

QSqlQuery query;
query.exec("SELECT * FROM t_STUDENT"); // 查询的结果可能不止一条记录,所以我们称之为结果集
while (query.next())
{
QString name = query.value(0).toString(); //取第i条记录第1个字段(从0开始计数)的结果
int age = query.value(0).toInt(); //取第i条记录第2个字段的结果
// ... 处理name,age变量数据
}

  seek(int n) :query指向结果集的第n条记录。指定当前的位置

  first() :query指向结果集的第一条记录。

  last() :query指向结果集的最后一条记录。

  next() :query指向下一条记录,每执行一次该函数,便指向相邻的下一条记录。

  previous() :query指向上一条记录,每执行一次该函数,便指向相邻的上一条记录。

  record() :获得现在指向的记录。

  value(int n) :获得属性的值。其中n表示你查询的第n个属性

  int rowNum = query.at(); //获取query所指向的记录在结果集中的编号

  int fieldNo = query.record().indexOf(“name”); //返回"name"的列号

  int columnNum = query.record().count(); //获取每条记录中属性(即列)的个数

  事务操作

  操作函数:transaction(),commit()提交,rollback()回滚

if (QSqlDatabase::database().driver()->hasFeature(QSqlDriver::Transactions)){ ... } //

  操作事务前,先判断该数据库是否支持事务操作。hasFeature是QSQLDriver类函数

  插入一条记录,然后提交事务

QSqlDatabase::database().transaction();
QSqlQuery query;
query.exec("SELECT id FROM T_STUDENT WHERE class=1");
if (query.next())
{
query.exec("INSERT INTO T_STUDENT (id,name,age) VALUES (3,'小李',13)");
}
QSqlDatabase::database().commit();

22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号