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中出现问题,因此再网 ...
随机推荐
- tomcat logs 目录下各日志文件的含义
tomcat每次启动时,自动在logs目录下生产以下日志文件,按照日期自动备份 localhost.2016-07-05.txt //经常用到的文件之一 ,程序异常没有被捕获的时候抛出的地方 ca ...
- tomcat8源码分析-Connector初始化
谈起Tomcat的诞生,最早可以追溯到1995年.近20年来,Tomcat始终是使用最广泛的Web服务器,由于其使用Java语言开发,所以广为Java程序员所熟悉.很多人早期的J2EE项目,由程序员自 ...
- 基于html5鼠标悬停图片动画展示效果
分享一款基于html5鼠标悬停图片动画展示效果.里面包含两款不同效果的html5图片展示效果.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class=" ...
- Nio中文API
https://leocook.gitbooks.io/java-nio-programming-guide/content/
- Liunx 安装 Mysql 5.7
#[安装 Mysql 5.7] # 00.系统目录说明# 安装文件下载目录:/data/software# Mysql目录安装位置:/usr/local/mysql# 数据库保存位置:/data/my ...
- 应用层timer_libc_posix timer
应用层除了通过setitimer/getitimer设置获取timer外,还可通过timer_create()等一系列函数实现应用层timer功能. 应用流程 The timers created b ...
- yii的一些方法的解析和blog的详细解析
1. 存取数据库方法存储第一种(SAVE )存表时候用到 例子: $post=new Post;$post->title='sample post';$post->content='c ...
- 【转】WCF入门教程三[WCF的宿主]
一.WCF服务应用程序与WCF服务库 我们在平时开发的过程中常用的项目类型有“WCF 服务应用程序”和“WCF服务库”. WCF服务应用程序,是一个可以执行的程序,它有独立的进程,WCF服务类契约的定 ...
- e675. 翻转缓冲图像
// To create a buffered image, see e666 创建缓冲图像 // Flip the image vertically AffineTransform tx = Aff ...
- Huffman树
结点定义: /* * Huffman树结点定义 */ struct Node { ElementType weight; // 结点的权值 struct Node *leftChild; // 结点的 ...