Qt监控Access数据库
配置文件setup.ini内容
[General]
DBFilePath=C:/Users/WangGang/Desktop/Database1.accdb
DBUserName=
DBPassword= GameIp=192.168.1.152
GamePort=
4DSystemIp=192.168.1.152
4DSystemPort=
UdpDataToGame=StartGame
UdpDataTo4DSystem=AS%NPlayDirect%%
工程文件中QT+=sql
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H #include <QMainWindow>
#include <QUdpSocket>
#include <QtSql> namespace Ui {
class MainWindow;
} class MainWindow : public QMainWindow
{
Q_OBJECT public:
explicit MainWindow(QWidget *parent = );
~MainWindow(); void connectDB(); void sendUdpData();
private slots:
void on_pushButton_clicked(); void queryDB(); void readUdpData(); private:
Ui::MainWindow *ui;
QTimer* queryTimer;//监测数据库定时器 QUdpSocket* udpSocket; QSqlDatabase db;
QString DBFilePath;//数据库文件路径
QString DBUserName;//数据库用户名
QString DBPassword;//数据库密码
QString GameIp;//游戏主机IP
quint16 GamePort;//游戏UDP绑定的端口
QString FourDSystemIp;//4D系统IP
quint16 FourDSystemPort;//4D系统UDP绑定的端口
QString UdpDataToGame;//向游戏发送的UDP数据
QString UdpDataTo4DSystem;//向4D系统发送的UDP数据
}; #endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h" #include <QMessageBox> MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this); QString appDirPath = QCoreApplication::applicationDirPath();
QSettings* configIniRead = new QSettings(appDirPath+"/setup.ini", QSettings::IniFormat);
configIniRead->setIniCodec(QTextCodec::codecForName("GB2312"));
if( configIniRead->allKeys().size() > )
{
DBFilePath = configIniRead->value("DBFilePath").toString();
DBUserName = configIniRead->value("DBUserName").toString();
DBPassword = configIniRead->value("DBPassword").toString();
GameIp = configIniRead->value("GameIp").toString();
GamePort = configIniRead->value("GamePort").toUInt();
qDebug()<<GameIp<<GamePort;
FourDSystemIp = configIniRead->value("4DSystemIp").toString();
FourDSystemPort = configIniRead->value("4DSystemPort").toUInt();
UdpDataToGame = configIniRead->value("UdpDataToGame").toString();
UdpDataTo4DSystem = configIniRead->value("UdpDataTo4DSystem").toString();
qDebug()<<"DBFilePath:"<<DBFilePath;
qDebug()<<"DBUserName:"<<DBUserName;
}
else
{
qDebug() << "have no setup.ini , use default setting ." ;
} connectDB(); udpSocket = new QUdpSocket(this);
connect( udpSocket, SIGNAL(readyRead()), SLOT(readUdpData()) ); queryTimer = new QTimer(this);
//connect( queryTimer, SIGNAL(timeout()), SLOT(queryDB()) );
queryTimer->start(); } MainWindow::~MainWindow()
{
delete ui;
db.close();
} //创建数据库连接
void MainWindow::connectDB()
{
QString sDbNm = DBFilePath;//数据库文件
db = QSqlDatabase::addDatabase("QODBC");//设置数据库驱动
QString dsn = QString("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; FIL={MS Access};DBQ=%1;").arg(sDbNm);//连接字符串
db.setDatabaseName(dsn);//设置连接字符串
db.setUserName(DBUserName);//设置登陆数据库的用户名
db.setPassword(DBPassword);//设置密码
bool ok = db.open();
if (!ok) {
QMessageBox messageBox;
messageBox.setText("Database error");
messageBox.exec();
db.close();
}
}
//查询数据库数据
void MainWindow::queryDB()
{
QSqlQuery query;
query.prepare("select * from t1");
query.exec();
while (query.next())
{
qDebug()<<query.value().toString();
//udpSocket->writeDatagram(data, sender, senderPort);
}
query.clear();
} void MainWindow::sendUdpData()
{
udpSocket->writeDatagram(UdpDataToGame.toStdString().data(), QHostAddress(GameIp), GamePort);
//qDebug()<<GameIp<<GamePort;
udpSocket->writeDatagram(UdpDataTo4DSystem.toStdString().data(), QHostAddress(FourDSystemIp), FourDSystemPort);
} void MainWindow::readUdpData()
{
QByteArray data;
QHostAddress sender;
quint16 senderPort = ; while ( udpSocket->hasPendingDatagrams() )
{
data.resize( udpSocket->pendingDatagramSize() );
udpSocket->readDatagram( data.data(), data.size(), &sender, &senderPort );
// DECLARE_DATA_READER(data, command);
// switch ( command )
// {
// case COMMAND_START_APP: onCmdStartApp(sender, senderPort, dataStream);break;
// case COMMAND_STOP_APP: onCmdStopApp(sender, senderPort, dataStream);break;
// case COMMAND_START_GAME: onCmdStartGame(sender, senderPort, dataStream);break;
// case COMMAND_PULSE: onCmdPulse(sender, senderPort, dataStream);break;
// case COMMAND_SHUTDOWN: onCmdShutdown(sender, senderPort, dataStream);break;
// default: break;
// }
}
} void MainWindow::on_pushButton_clicked()
{
queryDB();
sendUdpData();
}
Qt监控Access数据库的更多相关文章
- DPA/Ignite由于DNS问题导致连接不上被监控的数据库服务器
问题描述: 在DPA(Ignite)的管理监控界面发现有两台SQL Server数据库服务器连接不上,截图如下所示,检查其日志内容 具体错误日志如下所示, Notice:日志里面具体的服务器名称被我用 ...
- 使用percona-xtrabackup实现对线上zabbix监控系统数据库mariadb5.5.47的主从同步
使用percona-xtrabackup实现对线上zabbix监控系统数据库的主从同步 业务背景: zabbix3.0.4是业务的主要监控,部署在一台单机中,为避免数据丢失先对其做数据主从同步,因主数 ...
- QT连接多种数据库f方法及测试
QT提供了对多种数据库的访问支持,对SQL Server也可以通过ODBC来进行访问.要想顺利访问SQL Server. 首先要保证以下几点:1. QT编译时已经编译了QtSql2. 编译了ODBC插 ...
- Qt 操作SQLite数据库
项目中通常需要采用各种数据库(如 Qracle.SQL Server.MySQL等)来实现对数据的存储.查询等功能.下面讲解如何在 Qt 中操作 SQlite 数据库. 一.SQLite 介绍 Sql ...
- 007-Zabbix Server 自带模板监控MySQL数据库
监控数据库分为三种: 1.Zabbix Server 自带模板监控无密码MySQL数据库 2.Zabbix Server 自带模板监控有密码MySQL数据库 3.Zabbix Server 自带模板监 ...
- access数据库调用
1.工程环境配置(vs+qt) 点击项目,右键,选择项目设置,选择SQL 2.获取自己数据库的驱动版本有哪些,如下代码所示: QStringList drivers = QSqlDatabase::d ...
- 使用Zabbix监控Oracle数据库
Orabbix介绍 监控Oracle数据库我们需要安装第三方提供的Zabbix插件,我们先测试比较有名的Orabbix,http://www.smartmarmot.com/product/orabb ...
- 【.net 深呼吸】连接Access数据库应注意的几点
本地数据库可以有Y种选择,比如Sqlite.SQL Server Express.SQL Local DB.SQL Server CE.Access等,本文老周选用比较著名的Access本地数据库,在 ...
- Spotlight监控Oracle数据库的链接创建
最近在做性能测试时,由于要挂载空间数据,开发人员直接将所有业务表都挂到了Oracle数据库中.最近做了几次测试发现响应时间和吞吐量都不是很理想,进行一番分析后怀疑可能在Oracle中出现问题,因此再网 ...
随机推荐
- layer返璞归真
返璞归真 前端社区正在变得日渐喧嚣,我们似乎很难停下追逐的脚步.而Layui偏偏回望当初,奔赴在返璞归真的漫漫征途,自信并勇敢着,追寻于原生态的书写指令,试图以最简单的方式诠释高效
- 基于jQuery悬停弹出遮罩显示按钮代码
今天给大家分享一款基于jQuery悬停弹出遮罩显示按钮代码.这是是一款当鼠标悬停在图片上后,会出现一系列的按钮,文字等弹性动画效果.效果图如下: 在线预览 源码下载 实现的代码. html代码: ...
- 一款基于jquery的手风琴图片展示效果
今天要给大家分享一款基于jquery的手风琴图片展示效果.这款图片的展示效果鼠标经过前是灰色的,当鼠标经过时图片变大且变为彩色.效果图如下: 在线预览 源码下载 实现的代码. html代码: &l ...
- Python内置字典;dict ,set
dict and set dict: 键-值 /重复添加 set : 键 / key不能重复 对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容.相反,这些方法会创建新的对象并返 ...
- Log4j和thymeleaf结合导致sql 日志输出不了
最近用thymeleaf模板引擎的时候,发现sql 的日志输出不了,普通ssm框架搭建没问题,能输出sql日志,可是在使用thymeleaf引擎后,就发现用不了. 现在找到一种解决方法, 导入jar包 ...
- Energy Modes能量管理模式
1 EM0 运行模式 默认模式; 2 EM1 休眠模式 休眠模式 主处理器停止,片上系统模块运行; 3 EM2 深度休眠 只有异步或低频外设运行; 4 EM3 停止模式 与EM2相比,低频晶振 ...
- scsi线
- JavaScript中的Boolean 方法与Number方法
<html> <head> <script type="text/javascript"> //创建 var str = "aaafg ...
- css鼠标移动到文字上怎样变化背景颜色
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- B2B(企业对企业)、B2C(企业对个人)、C2C(个人对个人)
B2B(企业对企业).B2C(企业对个人).C2C(个人对个人)