Qt通过ODBC连接虚谷数据库,并对数据库数据进行增删查改

目录

  • 虚谷数据库
    • 简介
    • 测试虚谷数据库
    • 虚谷数据库中系统表
  • win7搭建OBDC数据源
  • Qt连接数据库
    • 通过QSqlDatabase的QODBC连接虚谷数据库
    • 查询修改虚谷数据库中数据
    • 测试案例
    • 补充-使用sqlDriverConnect 直接连接虚古数据库

虚谷数据库

简介

 虚谷数据库管理系统是一款大型、高性能、高安全、高可靠和完全自主知识产权的系统软件,
 是位于用户与操作系统之间的一层数据系统管理软件,
 是三大系统软件:操作系统、中间件和数据库之一,
 为应用软件的运行提供数据存储和管理功能,
 主解决信息数据的高效存贮、安全管理与快速检索等问题,
 主要功能包括数据字典、内存管理、事务管理、语法分析器、集成管理工具集等,
 提供数据定义、数据操作功能、数据库的运行管理、数据库的建立和维护功能

详细说明建议阅读: 国产数据库虚谷数据库管理系统(虚谷DBMS)介绍

测试虚谷数据库

到这篇随笔记录为止,使用的虚谷数据库是11.0版本的,通过虚谷数据交流群中下载文件如下图示:
Qt通过ODBC连接虚谷数据库,并对数据库数据进行增删查改_第1张图片
测试时双击 startup.bat 开启服务器,最开始我还以为直接执行exe,点了半天没反应,还是在群里咨询了一下才发现;
Qt通过ODBC连接虚谷数据库,并对数据库数据进行增删查改_第2张图片
虚谷数据的使用文档也比较完善,需要的内容说明基本都有,包括常见的数据库的创建,表,浮标这些
Qt通过ODBC连接虚谷数据库,并对数据库数据进行增删查改_第3张图片
文件中自带客户端程序可以查看当前服务器中的数据库
Qt通过ODBC连接虚谷数据库,并对数据库数据进行增删查改_第4张图片
Qt通过ODBC连接虚谷数据库,并对数据库数据进行增删查改_第5张图片
除了不能缩放窗体这点,使用起来还是挺方便的。

虚谷数据库中系统表

在测试数据库的时候,为了获取当前数据库的表列表,就找到几个相关表,

//select * from sys_tables; //只在SYSTEM数据库中有效,其他数据库中无权限
//select * from sys_databases;//只在SYSTEM数据库中有效,其他数据库中无权限
//select * from all_tables; //当前数据库所有表
//SELECT * from user_tables; //当前数据库有权限的表
//select * from dba_tables;//当前数据库所有表

win7搭建OBDC数据源

打开控制面板->管理工具->数据源ODBC
Qt通过ODBC连接虚谷数据库,并对数据库数据进行增删查改_第6张图片
安装虚谷数据库的ODBC源需要在虚谷数据库客户端工具中找到xuguodbc_install.exe进行安装
Qt通过ODBC连接虚谷数据库,并对数据库数据进行增删查改_第7张图片
然后在系统DSN里面添加XuguSQL 7.01
Qt通过ODBC连接虚谷数据库,并对数据库数据进行增删查改_第8张图片
安照指定格式填写内容,并测试连接成功!
Qt通过ODBC连接虚谷数据库,并对数据库数据进行增删查改_第9张图片

Qt连接数据库

通过QSqlDatabase的QODBC连接虚谷数据库

qt通过QSqlDatabase的QODBC连接虚谷数据库时,对数据的连接方式主要还是需要注意DSN的内容,其他的操作基本和操作其他数据库类似,部分示例:

   void Init(ConnetS cont,QString connention="QSQLITE_CINNENTION_DataSQl")
    {
        QSqlDatabase soft_DataBase=QSqlDatabase::database(connention);
        soft_DataBase = QSqlDatabase::addDatabase("QODBC",connention);
        soft_DataBase.setHostName(cont.Host);//地址
        soft_DataBase.setPort(cont.Port);//端口
        soft_DataBase.setDatabaseName(QString("DSN=%1;DRIVER=%2; DATABASE=%3;UID=%4;PWD=%5;")
                                      .arg(cont.DSN) //之前设置的OBDC数据源的名称
                                      .arg(cont.DRIVER) //默认值
                                      .arg(cont.DATABASE) //数据库名称
                                      .arg(cont.UID) //用户名
                                      .arg(cont.PWD) //用户密码
                                      );
        if (!soft_DataBase.open()) {
            emit Send_messages("连接失败:---不能打开软件数据库连接; " + soft_DataBase.lastError().driverText(),100000);
        }
    }

查询修改虚谷数据库中数据

对数据的增删改查基本与操作其他的数据库方式内饰,相当于只要设置好了ODBC,修改连接语句后,对数据的修改大同小异,部分示例:

//通过sql 语句查询数据
QSqlQuery DataSQl::SelectOrUpdateBy(QString sql)
{
    QSqlQuery query(soft_DataBase);
    if(soft_DataBase.open())
    {
        if(query.exec(sql))
        {
            return query;
        }
        else
            emit Send_messages("query.lastError: "+query.lastError().text(),100000);
        soft_DataBase.close();
    }
    return query;
}

/// 修改数据
/// \brief DataSQl::updateTable
/// \param 表名
/// \param 修改字段名称
/// \param 修改字段值
/// \param id 唯一标示
/// \param id值
/// \return 
///
int DataSQl::updateTable(QString Table,QString fieid,QString value,QString id,QString idvalue)
{
    if (!soft_DataBase.open()) {
        emit Send_messages("---不能打开项目数据库连接: " + soft_DataBase.lastError().driverText(),5000);
        return  -1;
    }
    QSqlQuery query(soft_DataBase);
    QString sql=QString("Update %1 set %2=:fieid where %3=:ids").arg(Table).arg(fieid).arg(id);
    query.prepare(sql);
    query.bindValue(":fieid",value);
    query.bindValue(":ids",idvalue);
    bool bol=query.exec();
    if(!bol)
    {
        emit Send_messages("---修改失败: " + query.lastError().driverText(),5000);
        return -1;
    }
    else
        return  1;
}

测试案例

Qt通过ODBC连接虚谷数据库,并对数据库数据进行增删查改_第10张图片
Qt通过ODBC连接虚谷数据库,并对数据库数据进行增删查改_第11张图片
Qt通过ODBC连接虚谷数据库,并对数据库数据进行增删查改_第12张图片
案例中包括直接sql查询,修改等,以及对当前登录账户的权限表数据进行修改,切换插入数据,右键删除数据等功能,

案例exe执行程序可直接运行,下载路径:链接: xugushujuku20210516.rar
Qt通过ODBC连接虚谷数据库,并对数据库数据进行增删查改_第13张图片
Qt通过ODBC连接虚谷数据库,并对数据库数据进行增删查改_第14张图片

如果需要源码请直接下载:链接: xugushujuku.rar
Qt通过ODBC连接虚谷数据库,并对数据库数据进行增删查改_第15张图片
Qt通过ODBC连接虚谷数据库,并对数据库数据进行增删查改_第16张图片

补充-使用sqlDriverConnect 直接连接虚古数据库

QSqlDatabase* db =new QSqlDatabase(QSqlDatabase::addDatabase("QODBC","QODBC_TEXTMODEL"));
QString _Connect=QString("DRIVER={XuguSQL 7.01}; DB=TEXTDB;UID=USR_BEJN_TEXT;PWD=123456!;server=127.1.1.1; PORT=5138;charset=GBK;timezone=GMT+08:00;");
qDebug()<<_Connect;
db->setDatabaseName(_Connect);
bool ok = db->open();
    if (ok){
        if(ismess)
            QMessageBox::information(this, "提示", "成功连接!");
        db->close();
    }
    else {
        qDebug()<<""<<db->lastError().text();
        QMessageBox::warning(this, "提示", "连接失败!"+db->lastError().text());
    }
    db->close();
    delete db;
    db = NULL;
    QSqlDatabase::removeDatabase("QODBC_TEXTMODEL");

可直接修改参数连接虚古数据,无需配置ODBC,其中XuguSQL 7.01为驱动版本;
Qt通过ODBC连接虚谷数据库,并对数据库数据进行增删查改_第17张图片

你可能感兴趣的:(QT专栏,qt,数据库,odbc)