当前位置:   article > 正文

Qt/qt creator操作sqlite数据库的基本使用_qt creator sqlite

qt creator sqlite

SQLite简介

SQLite是一个进程内的轻量级嵌入式数据库,它的数据库就是一个文件,实现了自给自足、无服务器、零配置的、事务性的SQL数据库引擎。它是一个零配置的数据库,这就体现出来SQLite与其他数据库的最大的区别:SQLite不需要在系统中配置,直接可以使用。且SQLite不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite可直接访问其存储文件。

SQLite对于其他数据库有什么优势:

  • 不需要配置,不需要安装和管理

  • 不需要一个单独的服务器进程或操作的系统(无服务器的)

  • 一个完整的SQLite数据库存储在一个单一的跨平台的磁盘文件上

  • SQLite是非常小的,轻量级的数据库,完全配置时小于400KiB,省略可选功能配置时小于250KiB

  • SQLite是一个自给自足的数据库,这也就意味着不需要任何外部的依赖

Qt中的实际使用

首先在项目中的后缀为.pro文件中加入QT       += sql //数据库模块


接着在要使用的.h文件中加入一下头文件

  1. #include <QSqlDatabase>
  2. #include <QSqlQuery>
  3. #include <QSqlDriver>
  4. #include <QSqlRecord>
  5. #include <QSqlError>



然后就可以使用sql的接口函数了

为了方便多个文件调用使用访问数据库,可以对数据库的使用进行封装:

第一步:
    方法一:创建或打开数据库
  1. bool MainWindow::create_open_database()
  2. {
  3. //数据库类型QSQLITE
  4. db=QSqlDatabase::addDatabase("QSQLITE");
  5. //设备编号-“easybook-3313b0”
  6. db.setHostName("easybook-3313b0");
  7. //数据库的文件名字
  8. db.setDatabaseName("MyDataBase.db");
  9. //数据库用户名
  10. db.setUserName("jons");
  11. //数据库密码
  12. db.setPassword("123123");
  13. //判断是否成功打开
  14. if(!db.open())
  15. {
  16. qDebug()<<"open database is error!";
  17. return false;
  18. }else
  19. return true;
  20. }
方法二:创建或打开数据库
  1. bool MainWindow::create_open_database()
  2. {
  3. if (QSqlDatabase::contains("easybook-3313b0"))
  4. {
  5. db = QSqlDatabase::database("easybook-3313b0");
  6. }
  7. else
  8. {
  9. //建立和SQlite数据库的连接
  10. db = QSqlDatabase::addDatabase("QSQLITE");
  11. db.setHostName("easybook-3313b0");
  12. //设置数据库文件的名字
  13. db.setDatabaseName("MyDataBase.db");
  14. db.setUserName("jons");
  15. db.setPassword("123123");
  16. }
  17. if(!db.open())
  18. {
  19. qDebug()<<"open database is error!";
  20. return false;
  21. }else
  22. return true;
  23. }
第二步:创建数据库中的表
  1. bool MainWindow::create_tabel()
  2. {
  3. QSqlQuery query(db);
  4. bool success = query.exec("create table student(id int primary key,name varchar,sex varchar,address int)");
  5. if(success)
  6. qDebug()<<"create student tabel is success!";
  7. else
  8. qDebug()<<"create student tabel is error!";
  9. query.exec("select * from student");
  10. QSqlRecord rec = query.record();
  11. qDebug()<<"student 的表字段数"<<rec.count();
  12. }
第三步:数据库的基本操作,增删改查
  1. //插入:
  2. bool MainWindow::insert_data()
  3. {
  4. bool success;
  5. QSqlQuery query(db);
  6. query.prepare("insert into student values(?,?,?,?)");
  7. query.bindValue(0,select_tablecount());
  8. query.bindValue(1,ui->lineEdit->text());
  9. query.bindValue(2,ui->lineEdit_2->text());
  10. query.bindValue(3,ui->lineEdit_3->text());
  11. success=query.exec();
  12. if(success)
  13. qDebug()<<"insert student msg is success!";
  14. else
  15. qDebug()<<"insert student msg is error!"<<query.lastError().driverText();
  16. }
  17. //删除:
  18. bool MainWindow::detele_tablemag()
  19. {
  20. QSqlQuery query(db);
  21. query.exec(QString("delete from student where address=%1" ).arg(ui->lineEdit_5->text()));
  22. if(!query.exec())
  23. qDebug()<<"delete student msg is error!"<<query.lastError();
  24. else
  25. qDebug()<<"delete student msg is success";
  26. }
  27. //修改:
  28. bool MainWindow::update_tablemsg()
  29. {
  30. bool success;
  31. QSqlQuery query(db);
  32. query.prepare(QString("update student set name=?,sex=?,address=? where address =%1").arg(ui->lineEdit_4->text()));
  33. query.bindValue(0,ui->lineEdit->text());
  34. query.bindValue(1,ui->lineEdit_2->text());
  35. query.bindValue(2,ui->lineEdit_3->text());
  36. success=query.exec();
  37. if(success)
  38. qDebug()<<"update student msg is success!";
  39. else
  40. qDebug()<<"update student msg is error!"<<query.lastError().driverText();
  41. }
  42. //查询:
  43. bool MainWindow::select_tablemsg()
  44. {
  45. QSqlQuery query(db);
  46. query.exec("select * from student");
  47. if(!query.exec())
  48. qDebug()<<"select student msg is error!"<<query.lastError();
  49. else
  50. {
  51. while(query.next())
  52. {
  53. int id =query.value(0).toInt();
  54. QString name=query.value(1).toString();
  55. QString sex=query.value(2).toString();
  56. int address=query.value(3).toInt();
  57. ui->listWidget->addItem(QString("id%1 name:%2 sex:%3 address%4").arg(id).arg(name).arg(sex).arg(address));
  58. }
  59. }
  60. //其他:
  61. //排序:
  62. bool MainWindow::table_sort()
  63. {
  64. QSqlQuery query(db);
  65. query.exec("select * from student order by id desc");
  66. }
  67. //查询数据表的行数:
  68. int MainWindow::select_tablecount()
  69. {
  70. int count=0;
  71. QSqlQuery query(db);
  72. query.exec("select * from student");
  73. if(!query.exec())
  74. {
  75. qDebug()<<"select student msg is error!"<<query.lastError();
  76. }
  77. else
  78. {
  79. while(query.next())
  80. {
  81. count++;
  82. }
  83. }
  84. return count;
  85. }

案例截图:

最后:案例源码

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
  

闽ICP备14008679号