• Qt 自带的数据库QSQLITE


    database.h

     1 #ifndef DATABASE_H
     2 #define DATABASE_H
     3 
     4 #include <QTextCodec>
     5 #include <QSqlDatabase>
     6 #include <QSqlQuery>
     7 #include <QTime>
     8 #include <QSqlError>
     9 #include <QtDebug>
    10 #include <QSqlDriver>
    11 #include <QSqlRecord>
    12 
    13 class DataBase
    14 {
    15 public:
    16     bool createConnection();  //创建一个连接
    17     bool createTable();       //创建数据库表
    18     bool insert();            //出入数据
    19     bool queryAll();          //查询所有信息
    20     bool updateById(int id);  //更新
    21     bool deleteById(int id);  //删除
    22     bool sortById();          //排序
    23 };
    24 
    25 #endif // DATABASE_H

    database.cpp

      1 #include "database.h"
      2 
      3 
      4 //建立一个数据库连接
      5 bool DataBase::createConnection()
      6 {
      7     //以后就可以用"sqlite1"与数据库进行连接了
      8     QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "sqlite1");
      9     db.setDatabaseName(".//qtDb.db");
     10     if( !db.open())
     11     {
     12         qDebug() << "无法建立数据库连接";
     13         return false;
     14     }
     15     return true;
     16 }
     17 
     18 //创建数据库表
     19 bool DataBase::createTable()
     20 {
     21     QSqlDatabase db = QSqlDatabase::database("sqlite1"); //建立数据库连接
     22     QSqlQuery query(db);
     23     bool success = query.exec("create table automobil(id int primary key,attribute varchar,"
     24                               "type varchar,kind varchar,nation int,carnumber int,elevaltor int,"
     25                               "distance int,oil int,temperature int)");
     26     if(success)
     27     {
     28         qDebug() << QObject::tr("数据库表创建成功!
    ");
     29         return true;
     30     }
     31     else
     32     {
     33         qDebug() << QObject::tr("数据库表创建失败!
    ");
     34         return false;
     35     }
     36 }
     37 
     38 //向数据库中插入记录
     39 bool DataBase::insert()
     40 {
     41     QSqlDatabase db = QSqlDatabase::database("sqlite1"); //建立数据库连接
     42     QSqlQuery query(db);
     43     query.prepare("insert into automobil values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
     44 
     45     long records = 10;
     46     for(int i=0; i<records; i++)
     47     {
     48         query.bindValue(0, i);
     49         query.bindValue(1, "四轮");
     50         query.bindValue(2, "轿车");
     51         query.bindValue(3, "富康");
     52         query.bindValue(4, rand()%100);
     53         query.bindValue(5, rand()%10000);
     54         query.bindValue(6, rand()%300);
     55         query.bindValue(7, rand()%200000);
     56         query.bindValue(8, rand()%52);
     57         query.bindValue(9, rand()%100);
     58 
     59         bool success=query.exec();
     60         if(!success)
     61         {
     62             QSqlError lastError = query.lastError();
     63             qDebug() << lastError.driverText() << QString(QObject::tr("插入失败"));
     64             return false;
     65         }
     66     }
     67     return true;
     68 }
     69 
     70 //查询所有信息
     71 bool DataBase::queryAll()
     72 {
     73     QSqlDatabase db = QSqlDatabase::database("sqlite1"); //建立数据库连接
     74     QSqlQuery query(db);
     75     query.exec("select * from automobil");
     76     QSqlRecord rec = query.record();
     77     qDebug() << QObject::tr("automobil表字段数:" ) << rec.count();
     78 
     79     while(query.next())
     80     {
     81         for(int index = 0; index < 10; index++)
     82             qDebug() << query.value(index) << " ";
     83         qDebug() << "
    ";
     84     }
     85 }
     86 
     87 //根据ID删除记录
     88 bool DataBase::deleteById(int id)
     89 {
     90     QSqlDatabase db = QSqlDatabase::database("sqlite1"); //建立数据库连接
     91     QSqlQuery query(db);
     92     query.prepare(QString("delete from automobil where id = %1").arg(id));
     93     if(!query.exec())
     94     {
     95         qDebug() << "删除记录失败!";
     96         return false;
     97     }
     98     return true;
     99 }
    100 
    101 //根据ID更新记录
    102 bool DataBase::updateById(int id)
    103 {
    104     QSqlDatabase db = QSqlDatabase::database("sqlite1"); //建立数据库连接
    105     QSqlQuery query(db);
    106     query.prepare(QString("update automobil set attribute=?,type=?,"
    107                              "kind=?, nation=?,"
    108                              "carnumber=?, elevaltor=?,"
    109                              "distance=?, oil=?,"
    110                              "temperature=? where id=%1").arg(id));
    111 
    112      query.bindValue(0,"四轮");
    113      query.bindValue(1,"轿车");
    114      query.bindValue(2,"富康");
    115      query.bindValue(3,rand()%100);
    116      query.bindValue(4,rand()%10000);
    117      query.bindValue(5,rand()%300);
    118      query.bindValue(6,rand()%200000);
    119      query.bindValue(7,rand()%52);
    120      query.bindValue(8,rand()%100);
    121 
    122      bool success=query.exec();
    123      if(!success)
    124      {
    125           QSqlError lastError = query.lastError();
    126           qDebug() << lastError.driverText() << QString(QObject::tr("更新失败"));
    127      }
    128     return true;
    129 }
    130 
    131 //排序
    132 bool DataBase::sortById()
    133 {
    134     QSqlDatabase db = QSqlDatabase::database("sqlite1"); //建立数据库连接
    135     QSqlQuery query(db);
    136     bool success=query.exec("select * from automobil order by id desc");
    137     if(success)
    138     {
    139         qDebug() << QObject::tr("排序成功");
    140         return true;
    141     }
    142     else
    143     {
    144         qDebug() << QObject::tr("排序失败!");
    145         return false;
    146     }
    147 }

    main.cpp

     1 #include <QCoreApplication>
     2 #include "database.h"
     3 
     4 int main(int argc, char *argv[])
     5 {
     6     QCoreApplication a(argc, argv);
     7     QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());
     8 
     9     DataBase d;
    10     d.createConnection();  //创建连接
    11     //d.createTable();
    12     //d.insert();
    13     d.queryAll();          //已经完成过createTable(), insert(), 现在进行查询
    14 
    15     return 0;
    16 }

    运行结果

    这里写图片描述

    项目名称为”sqlex”,然后就可以在与当前项目同一级目录下的“build-SQLEx-Desktop_Qt_5_7_0_MinGW_32bit-Debug”中可以看到qtDb.db数据库文件,该数据库可以用软件SQLite直接打开

  • 相关阅读:
    网上购物商城管理系统-毕业设计
    中国购物管理系统-毕业设计
    网上购物管理系统-毕业设计
    网上商城管理系统-课程设计
    公益捐赠管理系统-毕业设计
    校园图书捐赠管理系统-毕业设计
    电子商务商城管理系统-毕业设计
    超市会员管理系统-毕业设计
    天猫商城管理系统-毕业设计
    高校校园设备管理系统-毕业设计
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14367213.html
Copyright © 2020-2023  润新知