qt之sqlite操作1

主要涉及以下类(或头文件):

QSqlDatabase和QSqlQuery,其中QSqlDatabase用于创建数据库,QSqlQuery用于执行sql语句。

1.QSqlDatabase创建连接数据库实例,一个QSqlDatabase的实例代表了一个数据库连接。

QSqlDatabase db = QSqlDatabase::addDatabase("QOCI", "QSQLITE");  //设置数据库驱动类型为sqlite
db.setHostName("localhost");  //数据库主机名   
db.setDatabaseName("scott");  //数据库名   
db.setUserName("stott");      //数据库用户名   
db.setPassword("tiger");      //数据库密码   
db.open();          //打开数据库连接  调用 open() 方法打开数据库物理连接。在打开连接之前,连接不可用
db.close();         //释放数据库连接  

在使用QSqlDatabase::addDatabase("QOCI","QSQLITE")函数时,第一个参数是驱动类型主键,第二个是连接名。

2.QSqlQuery类:操作数据库

QSqlQuery query = = QSqlQuery(db); ;
query.exec(sql);

 QSqlQuery query;
      query.prepare("INSERT INTO person (id, forename, surname) "
                    "VALUES (:id, :forename, :surname)");
      query.bindValue(":id", 1001);
      query.bindValue(":forename", "Bart");
      query.bindValue(":surname", "Simpson");
      query.exec();

3、查询table名为UserInput里的所有记录

  QSqlQuery qsQuery = QSqlQuery(db);
   QString strSqlText("SELECT * FROM UserInput");//查询语法
   qsQuery.prepare(strSqlText);
   qsQuery.exec();
    while (qsQuery.next()) //依次取出查询结果的每一条记录,直至结束
    {
        UserInputData userInputData;
        userInputData.m_id = qsQuery.value(0).toInt();
        userInputData.m_assessDate = qsQuery.value(1).toString();     
    }
QSqlQuery qsQuery = QSqlQuery(db);
    QString strSqlText("SELECT MAX(ID) FROM UserInput");//ID最大的值
    qsQuery.prepare(strSqlText);
    qsQuery.exec();
 
    if (qsQuery.next()) 
    {
        return qsQuery.value(0).toInt();
    }
    else
    {
        return 0;
    }

4、增加

   QSqlQuery qsQuery = QSqlQuery(db);
    QString strSqlText("INSERT INTO UserInput (ID, AssessDate) \              
                       VALUES (:ID, :AssessDate)");
    qsQuery.prepare(strSqlText);
    qsQuery.bindValue(":ID", id);
    qsQuery.bindValue(":AssessDate", userInputData.m_assessDate);  
    qsQuery.exec();
    CommitDB(qsQuery);
5、更新

    QSqlQuery qsQuery = QSqlQuery(db);
    QString strSqlText("UPDATE UserInput SET AssessDate = :AssessDate \
                       WHERE ID = :ID");
    qsQuery.prepare(strSqlText);
    qsQuery.bindValue(":AssessDate", userInputData.m_assessDate);
   
    qsQuery.bindValue(":ID", id);
    qsQuery.exec();
    CommitDB(qsQuery);
6、删除

    QSqlQuery qsQuery = QSqlQuery(db);
    QString strSqlText("DELETE FROM UserInput WHERE ID = :ID");
    qsQuery.prepare(strSqlText);
    qsQuery.bindValue(":ID", id);
    qsQuery.exec();
    CommitDB(qsQuery);
原文链接:https://blog.csdn.net/Zzhouzhou237/article/details/79459320

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值