QT对SQLite数据库操作

1.pro文件里添加 sql 模块

          QT += core gui sql

2.QSqlDatabase类

1.静态函数:addDatabase()函数,建立一个与数据库的连接实例

addDatabase

(const QString &type, const QString &connectionName = QLatin1String(defaultConnection))

例:QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "accMasterComputer.db");

第一参数为数据库驱动类型如:MYSQL,QSQLITE,主要看自己数用什么数据库;

使用驱动程序类型和连接名称connectionName将数据库添加到数据库连接列表中。如果已经存在名为connectionName的数据库连接,则会删除该连接。
数据库连接由connectionName引用。将返回新添加的数据库连接。
如果类型不可用或无法加载,isValid()将返回false。
如果未指定connectionName,则新连接将成为应用程序的默认连接,并且随后对database()的调用(不带connection-name参数)将返回默认连接。如果此处提供了connectionName,请使用数据库(connectionName)检索连接。

2.连接函数 setDatabaseName(const QString &name)

setDatabaseName(const QString &name)将要连接的数据库名称设置为name。若要生效,必须在打开连接之前设置数据库名称

参数是你要连接的数据库名字

3.open()打开数据库

使用实例对象打开   

例:

if(db.open())
   {
           QMessageBox::information(this,"提示","打开数据库成功");

   }else{
           QMessageBox::warning(this,"提示","打开数据库失败");
           qDebug()<<db.lastError().text();
    }

3.QSqlQuery 有两个重要的构造函数,平时我们也基本上就用这两种形式来构造 QSqlQuery 对象。

QSqlQuery::​QSqlQuery(const QString &query = QString(), QSqlDatabase db = QSqlDatabase()):如果没有传入或者传入一个无效的 QSqlDatabase 对象,则使用默认的 QSqlDatabase;如果 query 不是空字符串,则会执行这个 query 的数据库操作。例如QSqlQuery query("SELECT * FROM user") 则就会使用默认的数据库连接执行查询操作,而 QSqlQuery query 则会使用默认的数据库连接创建一个 QSqlQuery 对象,但是不执行任何操作。

QSqlQuery::​QSqlQuery(QSqlDatabase db):使用指定的数据库连接创建 QSqlQuery 对象,如果数据库连接无效,则使用默认的数据库连接,例如QSqlQuery query(getConnectionByName("MyConnection"))

查询操作与显示:

 QSqlQuery sqlQuery(db);
    sqlQuery.exec(“string”);
    while (sqlQuery.next()) {
        i += 1;
        QString name = sqlQuery.value(0).toString();
        QString salary = sqlQuery.value(1).toString();
        qDebug() << name << salary;
    }
    sqlQuery.clear();

接下来是代码演示:

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "hmi_log.rdbacc");    //设置连接的数据库类型以这个数据库的链接名称
    db.setDatabaseName(path);    //path为你要连接的数据库名称
    //db = QSqlDatabase::database();
    if(!db.isOpen())
   {
        if(db.open()){
            //QMessageBox::warning(this,"提示","打开数据库成功");
        }else{
            //QMessageBox::warning(this,"提示","打开数据库失败");
            qDebug() << "Error:" << db.lastError();    //失败就显示失败原因
        }

   }

QSqlQuery sqlQuery(db);
QString sSql = "SELECT RowCount,Text,Number,Time,Date,State,Category,ClassId,GroupId,ConnectName,GradeId FROM alarmLog_2 WHERE DATE BETWEEN '"+startTime+"' AND '"+endTime+"' ORDER BY Date ";

    if(sqlQuery.exec(sSql)){        //exex执行查询语句
         qDebug()<<"select yes";
     }else{
         qDebug()<<"selsect no";
         qDebug() << "Error: " << sqlQuery.lastError();    //失败就打印失败原因
     }

     while (sqlQuery.next())
     {
         out<<sqlQuery.value(0).toString()+",";
         out<<sqlQuery.value(1).toString()+",";
         out<<sqlQuery.value(2).toString()+",";
         out<<sqlQuery.value(3).toString()+",";
         out<<sqlQuery.value(4).toString()+",";
         out<<sqlQuery.value(5).toString()+",";
         out<<sqlQuery.value(6).toString()+",";
         out<<sqlQuery.value(7).toString()+",";
         out<<sqlQuery.value(8).toString()+",";
         out<<sqlQuery.value(9).toString()+",";
         out<<sqlQuery.value(10).toString();
         out<<"\n";
     }//value(int)就是查询出来的每个字段

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值