QT 的数据库操作(QSqlDatabase、QSqlQuery)

1、QSqlDatabase创建连接数据库实例,一个QSqlDatabase的实例代表了一个数据库连接。

Qt提供的对不同数据库的驱动支持:

Driver Type Description:
QDB2        IBM DB2
QIBASE     Borland InterBase Driver
QMYSQL  MySQL Driver
QOCI        Oracle Call Interface Driver
QODBC    ODBC Driver (includes Microsoft SQL Server)
QPSQL     PostgreSQL Driver
QSQLITE   SQLite version 3 or above
QSQLITE2 SQLite version 2
QTDS        Sybase Adaptive Server

下面代码的功能是创建连接QSQLITE类型的数据库

QSqlDatabase db = QSqlDatabase::addDatabase("QOCI", "QSQLITE");  
db.setHostName("localhost");  //数据库主机名   
db.setDatabaseName("scott");  //数据库名   
db.setUserName("stott");      //数据库用户名   
db.setPassword("tiger");      //数据库密码   
db.open();          //打开数据库连接  调用 open() 方法打开数据库物理连接。在打开连接之前,连接不可用
db.close();         //释放数据库连接  

在使用QSqlDatabase::addDatabase("QOCI","QSQLITE")函数时,第一个参数是驱动类型主键,第二个是连接名。

2、QSqlQuery类:操作数据库

QSqlQuery qsQuery = QSqlQuery(db);
QString strSqlText = QString("CREATE TABLE ConfigInfo ( [DicomFolderPath]       VARCHAR(256), \
[OpDicomFilePath]    VARCHAR(256) \
                                 );");
qsQuery.prepare(strSqlText); 
qsQuery.exe();
 strSqlText = "INSERT INTO ConfigInfo (DicomFolderPath,  OpDicomFilePath) \
                 VALUES (:DicomFolderPath, :OpDicomFilePath)";
  qsQuery.prepare(strSqlText);
  qsQuery.bindValue(":DicomFolderPath", "");
  qsQuery.bindValue(":OpDicomFilePath", "");
  qsQuery.exec();  
  CommitDB(qsQuery);

bool CommitDB(QSqlQuery& qsQuery) 
{
    if (qsQuery.isActive())//成功执行sql语句 isActive会返回true,否则返回false
    {
        m_qdbDataBase.commit();
        return true;
    }
    else
    {
        m_qdbDataBase.rollback();
        return false;
    }
}

以上基本完成了数据库的创建、连接以及table的创建,下面演示查询、删除、增加等基本操作

3、查询table名为UserInput里的所有记录

  QSqlQuery qsQuery = QSqlQuery(db);
   QString strSqlText("SELECT * FROM UserInput");//查询语法
   qsQuery.prepare(strSqlText);
   qsQuery.exec();
    while (qsQuery.next()) //依次取出查询结果的每一条记录,直至结束
    {
        UserInputData userInputData;
        userInputData.m_id = qsQuery.value(0).toInt();
        userInputData.m_assessDate = qsQuery.value(1).toString();     
    }
QSqlQuery qsQuery = QSqlQuery(db);
    QString strSqlText("SELECT MAX(ID) FROM UserInput");//ID最大的值
    qsQuery.prepare(strSqlText);
    qsQuery.exec();

    if (qsQuery.next()) 
    {
        return qsQuery.value(0).toInt();
    }
    else
    {
        return 0;
    }

4、增加

   QSqlQuery qsQuery = QSqlQuery(db);
    QString strSqlText("INSERT INTO UserInput (ID, AssessDate) \              
                       VALUES (:ID, :AssessDate)");
    qsQuery.prepare(strSqlText);
    qsQuery.bindValue(":ID", id);
    qsQuery.bindValue(":AssessDate", userInputData.m_assessDate);  
    qsQuery.exec();
    CommitDB(qsQuery);

5、更新

    QSqlQuery qsQuery = QSqlQuery(db);
    QString strSqlText("UPDATE UserInput SET AssessDate = :AssessDate \
                       WHERE ID = :ID");
    qsQuery.prepare(strSqlText);
    qsQuery.bindValue(":AssessDate", userInputData.m_assessDate);
   
    qsQuery.bindValue(":ID", id);
    qsQuery.exec();
    CommitDB(qsQuery);

6、删除

    QSqlQuery qsQuery = QSqlQuery(db);
    QString strSqlText("DELETE FROM UserInput WHERE ID = :ID");
    qsQuery.prepare(strSqlText);
    qsQuery.bindValue(":ID", id);
    qsQuery.exec();
    CommitDB(qsQuery);





  • 14
    点赞
  • 128
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
Qt是一个跨平台的C++应用程序开发框架,它提供了丰富的功能和工具来简化应用程序的开发过程。在Qt中,可以使用QSqlQuery类来创建和操作数据库。 QSqlQuery类是Qt提供的用于执行SQL语句的类,它可以执行查询、插入、更新和删除等操作。下面是使用QSqlQuery类创建数据库的一般步骤: 1. 首先,需要在Qt项目中添加数据库模块的支持。可以在项目文件(.pro)中添加如下代码: ``` QT += sql ``` 2. 在代码中包含QSqlQuery头文件: ``` #include <QSqlQuery> ``` 3. 创建数据库连接: ``` QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("database.db"); // 设置数据库名称 if (!db.open()) { // 处理数据库连接失败的情况 } ``` 4. 执行SQL语句: ``` QSqlQuery query; query.exec("CREATE TABLE IF NOT EXISTS students (id INT PRIMARY KEY, name TEXT, age INT)"); ``` 上述代码创建了一个名为"students"的表,包含id、name和age三个字段。 5. 可以通过QSqlQuery的其他方法来执行不同的SQL操作,例如插入数据、查询数据等。例如,插入一条数据: ``` query.prepare("INSERT INTO students (id, name, age) VALUES (:id, :name, :age)"); query.bindValue(":id", 1); query.bindValue(":name", "John"); query.bindValue(":age", 20); query.exec(); ``` 上述代码将一条id为1、name为"John"、age为20的记录插入到"students"表中。 6. 最后,记得在不需要使用数据库时关闭数据库连接: ``` db.close(); ``` 以上是使用QSqlQuery类创建数据库的基本步骤。你可以根据具体需求使用QSqlQuery的其他方法来执行更复杂的数据库操作

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

COSummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值