虚谷数据库管理系统是一款大型、高性能、高安全、高可靠和完全自主知识产权的系统软件,
是位于用户与操作系统之间的一层数据系统管理软件,
是三大系统软件:操作系统、中间件和数据库之一,
为应用软件的运行提供数据存储和管理功能,
主解决信息数据的高效存贮、安全管理与快速检索等问题,
主要功能包括数据字典、内存管理、事务管理、语法分析器、集成管理工具集等,
提供数据定义、数据操作功能、数据库的运行管理、数据库的建立和维护功能
详细说明建议阅读: 国产数据库虚谷数据库管理系统(虚谷DBMS)介绍
到这篇随笔记录为止,使用的虚谷数据库是11.0版本的,通过虚谷数据交流群中下载文件如下图示:
测试时双击 startup.bat 开启服务器,最开始我还以为直接执行exe,点了半天没反应,还是在群里咨询了一下才发现;
虚谷数据的使用文档也比较完善,需要的内容说明基本都有,包括常见的数据库的创建,表,浮标这些
文件中自带客户端程序可以查看当前服务器中的数据库
除了不能缩放窗体这点,使用起来还是挺方便的。
在测试数据库的时候,为了获取当前数据库的表列表,就找到几个相关表,
//select * from sys_tables; //只在SYSTEM数据库中有效,其他数据库中无权限
//select * from sys_databases;//只在SYSTEM数据库中有效,其他数据库中无权限
//select * from all_tables; //当前数据库所有表
//SELECT * from user_tables; //当前数据库有权限的表
//select * from dba_tables;//当前数据库所有表
打开控制面板->管理工具->数据源ODBC
安装虚谷数据库的ODBC源需要在虚谷数据库客户端工具中找到xuguodbc_install.exe进行安装
然后在系统DSN里面添加XuguSQL 7.01
安照指定格式填写内容,并测试连接成功!
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;
}
案例中包括直接sql查询,修改等,以及对当前登录账户的权限表数据进行修改,切换插入数据,右键删除数据等功能,
案例exe执行程序可直接运行,下载路径:链接: xugushujuku20210516.rar
如果需要源码请直接下载:链接: xugushujuku.rar
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");