zoukankan      html  css  js  c++  java
  • 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 等与数据库相关的类必须在数据库连接后建立才有效





















  • 相关阅读:
    Eclipse / android studio 添加第三方jar包 步骤
    Android checkbox 自定义点击效果
    Android 程序打包和安装过程
    Android 基础
    (转)Genymotion安装virtual device的“unable to create virtual device, Server returned Http status code 0”的解决方法
    (转)eclipse 导入Android 项目 步骤
    微信开放平台注册 步骤
    Android Studio 初级安装
    数组
    作用域问题代码
  • 原文地址:https://www.cnblogs.com/dongdongweiwu/p/4743683.html
Copyright © 2011-2022 走看看