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支持的数据库
        • 进入此目录:[email protected]:/usr/local/Trolltech/Qt-4.6.3/plugins/sqldrivers$
        • [email protected]:/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:”表示这是建立在内存中的数据库,也就是
    • 说该数据库只在程序运行期间有效。如果需要保存该数据库文件,我们可以将它更改为实际的
    • 文件路径
    • 示例:
  • 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 等与数据库相关的类必须在数据库连接后建立才有效

来自为知笔记(Wiz)

时间: 2024-12-16 13:14:27

QT数据库操作的相关文章

qt 数据库操作总结

#include <QtSql>QT += sql QSqlDatabase类实现了数据库连接的操作QSqlQuery类用来执行SQL语句QSqlRecord类 封装数据库所有记录 第一:QSqlDatabase类QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");  采用QSQLITE数据库,QMYSQL数据库有问题?db.setHostName("localhost"); //设置数据库主机名

2.大约QT数据库操作,简单的数据库连接操作,增删改查数据库,QSqlTableModel和QTableView,事务性操作,大约QItemDelegate 代理

 Linux下的qt安装,命令时:sudoapt-get install qt-sdk 安装mysql数据库,安装方法參考博客:http://blog.csdn.net/tototuzuoquan/article/details/39565783 假设行想进数据库开发.须要安装libqt5sql5-mysql.命令是: sudo apt-get install libqt5sql5-mysql 4 创建一个项目 要调用数据库.须要加上QT += gui widgets sql  也就是说要加

Qt数据库操作(qt-win-commercial-src-4.3.1,VC6,Oracle,SQL Server)

qt-win-commercial-src-4.3.1.qt-x11-commercial-src-4.3.1Microsoft Visual C++ 6.0.KDevelop 3.5.0Windows Xp.Solaris 10.Fedora 8SQL Server.Oracle 10g Client ■.驱动编译这里要提及两个数据库驱动,分别是ODBC和OCI Windows操作系统中编译ODBC驱动:执行以下命令,会在%QTDIR%\plugins\sqldrivers目录下面生成qsql

Qt 多线程与数据库操作需要注意的几点问题(QSqlDatabase对象只能在当前线程里使用)

彻底抛弃MFC, 全面应用Qt 已经不少时间了.除了自己看书按步就班做了十几个验证性的应用,还正式做了3个比较大的行业应用,总体感觉很好.Native C++ 下, Qt 基本是我用过的最简便的界面库了.遇到了一些问题,大都解决的很顺利,回头想想,还是有几个问题很有意思,尤其是数据库应用.这里把我的经历分享一下. 1.线程内注册与连接数据库的竞争问题 文档上对多线程下数据库应用的注意事项写的很简明,一个线程创建的 QSqlDatabase 对象和 查出来的 QSqlQuery 对象只能给本线程用

qt 5 数据库操作(mysql)

其实大家都知道,QT5以上的都自带了数据库驱动,所以呢,基本上可以直接使用,于是如果想知道怎么连接数据库,请参考这位大神写的.http://qtdebug.com/DB-AccessMySQL.html 关于数据库操作 QSqlDatabase db = QSqldatabase::addDataBase("QMYSQL"); //博主用的mysql db.setHostName("127.0.0.1");                              

QT SQLite 多数据库操作大全

QT SQLite 多数据库操作大全 一.单数据库模型 一般QT都是把打开一个缺省数据库连接,操作一个数据库连接,但是对Sqlite中频率修改容易加锁,因此有一种设计模式是把频率修改的表放在不同的数据库文件中,但这样要修改代码操作数据库部分 通常打开代码 http://developer.nokia.com/community/wiki/Creating_an_SQLite_database_in_Qt bool DatabaseManager::openDB() { // Find QSLit

Qt 多线程与数据库操作需要注意的几点问题

源地址:http://blog.csdn.net/goldenhawking/article/details/10811409 彻底抛弃MFC, 全面应用Qt 已经不少时间了.除了自己看书按步就班做了十几个验证性的应用,还正式做了3个比较大的行业应用,总体感觉很好.Native C++ 下, Qt 基本是我用过的最简便的界面库了.遇到了一些问题,大都解决的很顺利,回头想想,还是有几个问题很有意思,尤其是数据库应用.这里把我的经历分享一下. 1.线程内注册与连接数据库的竞争问题 文档上对多线程下数

Qt 学习:数据库操作

Qt 提供了 QtSql 模块来提供平台独立的基于 SQL 的数据库操作.这里我们所说的“平台独立”,既包括操作系统平台,有包括各个数据库平台.另外,我们强调了“基于 SQL”,因为 NoSQL 数据库至今没有一个通用查询方法,所以不可能提供一种通用的 NoSQL 数据库的操作.Qt 的数据库操作还可以很方便的与 model/view 架构进行整合.通常来说,我们对数据库的操作更多地在于对数据库表的操作,而这正是 model/view 架构的长项. Qt 使用QSqlDatabase表示一个数据

3.QT数据库综合案例,模糊查询等操作

 1 新建一个项目: Database01.pro SOURCES += \ main.cpp \ Contact.cpp QT += gui widgets sql CONFIG += C++11 HEADERS += \ Contact.h Contact.h #ifndef CONTACT_H #define CONTACT_H   #include <QWidget> #include <QSqlTableModel> #include <QTableView&g