• QT数据库操作


    • QT对数据库的支持
      • QtSql类用于对数据库的支持
      • 使用是需包含<QtSql>
        • 包含以下类:
        • QSqlDatabase 类用于新建数据库
        • QSqlQuery用来来执行sql语句,如QSqlQuery query;query.exec("create table student(ID int primary key,name varchar(20)");
      • 需要在.pro文件底部加上 QT +=sql 一句
      • Qt支持的数据库类型:
      • 显示可用数据库驱动:
        • qDebug()<<"avalible sql drivers:";
          QStringList drivers=QSqlDatabase::drivers();
          foreach(QString driver,drivers)
          {
          qDebug()<<"/t"<<driver;
          }
          return a.exec();
        • linux系统下查看QT支持的数据库    
          • 进入此目录:pyd@ubuntu:/usr/local/Trolltech/Qt-4.6.3/plugins/sqldrivers$ 
          • pyd@ubuntu:/usr/local/Trolltech/Qt-4.6.3/plugins/sqldrivers$ ls
            libqsqlite.so  libqsqlite.so.debug  libqsqlmysql.so
          • ldd .so文件,查看是否有not found


    • Qt中使用sqlite
      • #include <QtCore/QCoreApplication> 
      • #include <QtSql> 
      • int main(int argc, char *argv[]) 
      • {  
      •        QCoreApplication a(argc, argv);  
      •        QSqlDatabase db = QSqlDatabase::addDatabase(“QSQLITE”); //添加数据库驱动 
      •        db.setDatabaseName(“:memory:”); //数据库连接命名 
        • //也可以写“e:test.db"
      •        if(!db.open())  //打开数据库 
      •        { 
      •               return fals e; 
      •        } 
      •        QSqlQuery query;  // 以下执行相关QSL 语句 
      •        query.exec(“create table student(id int primary key,name varchar)”); 
      •        //新建student 表,id设置为主键,还有一个name项 
      •        query.exec(“insert into student values(1,’xiaogang’)”);  
      •        query.exec(“insert into student values(2 ,’xiaoming’)”); 
      •        query.exec(“insert into student values(3,’xiaohong’)”);  
      •        //向表中插入3 条记录 
      •        query.exec(“select id,name from student where id >= 2″); 
      •        //查找表中id >=2  的记录的id项和name项的值 
      •        while(query.next())             //query.next()指向查找到的第一条记录,然后每次后移一
      • 条记录 
      •        { 
      •               int ele0 = query.value(0).toInt();             //query.value(0)是id的值,将其
      • 转换为int 型 
      •               QString ele1 =query.value(1).toString(); 
      •               qDebug() << ele0 <<ele1 ;            //输出两个值 
      •        } 
      •       
      •        return a.exec(); 
      • }  
      • 我们使用了SQLite数据库,连接名为“:memory:”表示这是建立在内存中的数据库,也就是
      • 说该数据库只在程序运行期间有效。如果需要保存该数据库文件,我们可以将它更改为实际的
      • 文件路径
      • 示例:main.cpp
    • Qt中使用其他数据库
      • QT需要手动编译其他数据库的驱动代码,以插件的形式使用它们。
      • 在QT帮助文档里搜索SQL Database drivers可以看到每种驱动的方法
    • sqlite数据库
      • sqlite是一款轻量级的数据库,经常被用在嵌入式,免费的Qt自带sqlite的驱动
      • 在本地生成数据库,没有用户与密码设置
      • linux下sqlite的安装:
        • sudo apt-get install sqlite3
      • linux下sqlite的使用:
        • sqlite在当前目录下生成、打开数据库文件
          • 命令行里输入“sqlite3 1.db”,如果1.db文件存在则会打开,不存在则创建,实际似乎在.database后创建
          • .database
          • .tables
          • .quit  .exit
    • QT中使用myssql
      • setDatabaseName("test");//不能指定目录,不能加.db
        • //连接数据库
        •     QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");//选择数据库类型
        •     db.setDatabaseName("ods1");//设置数据库名称

        •     if(isSqlConnected)
        •     {

        •     }
        •     else
        •     {
        •         db.setHostName(ui->hostNameLineEdit->text());
        •         db.setUserName(ui->userNameLineEdit->text());
        •         db.setPort(ui->sqlPortLineEdit->text().toInt());
        •         db.setPassword(ui->passwdLineEdit->text());
        •         qDebug("set completed");
        •         qDebug()<<ui->hostNameLineEdit->text()<<ui->userNameLineEdit->text()<<ui->sqlPortLineEdit->text().toInt()<<ui->passwdLineEdit->text();
        •     }

        •     if(db.open())//open! not isopen() !!!
        •     {
        •         qDebug("sql connected");
        •         isSqlConnected = true;
        •     }
        •     else
        •     {
        •         qDebug("not connected");
        •     }
    • 注意事项
      • QSqlTableModel 和 QSqlQuery 等与数据库相关的类必须在数据库连接后建立才有效





















  • 相关阅读:
    IDA Pro 权威指南学习笔记(十二)
    IDA Pro 权威指南学习笔记(十一)
    Julia
    Linux
    IDA Pro 权威指南学习笔记(十)
    IDA Pro 权威指南学习笔记(九)
    Julia
    从http简介到网络分层及web架构
    如何从notepad++的偏移量查找
    HTTP 包体
  • 原文地址:https://www.cnblogs.com/dongdongweiwu/p/4743683.html
Copyright © 2020-2023  润新知