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中出现问题,因此再网 ...
随机推荐
- PowerShell实现基于SharePoint的网站HomePage Auto-Create Solution
*** HomePage Auto-Create Solution Monday, January 12, 2015 PS:该项目为公司项目,我还是给他的名字屏蔽掉吧,这是我用PowerShell ...
- Android中WebView与H5的交互,Native与JS方法互调
项目中经常用到WebView与H5的交互,一个是H5调本地方法,一个是本地调H5方法,在此记录一下. 首先,启用JS支持 //启用js支持 webSettings.setJavaScriptEnabl ...
- C语言 · 因式分解
算法提高 8-1因式分解 时间限制:10.0s 内存限制:256.0MB 问题描述 设计算法,用户输入合数,程序输出若个素数的乘积.例如,输入6,输出2*3.输入20,输出2*2*5 ...
- C语言 · 新建Microsoft Word文档
算法提高 新建Microsoft Word文档 时间限制:1.0s 内存限制:256.0MB 问题描述 L正在出题,新建了一个word文档,想不好取什么名字,身旁一人惊问:“你出的题 ...
- java日期工具类DateUtil-续一
上篇文章中,我为大家分享了下DateUtil第一版源码,但就如同文章中所说,我发现了还存在不完善的地方,所以我又做了优化和扩展. 更新日志: 1.修正当字符串日期风格为MM-dd或yyyy-MM时,若 ...
- HashMap与ConcurrentHashMap的区别<转>
从JDK1.2起,就有了HashMap,正如前一篇文章所说,HashMap不是线程安全的,因此多线程操作时需要格外小心. 在JDK1.5中,伟大的Doug Lea给我们带来了concurrent包,从 ...
- oracle数据库表空间的创建与使用
以下操作请使用sys系统账号操作! 1. 查询物理存储的位置 SELECT tablespace_name, file_id, file_name, round(bytes / (1024 * 10 ...
- 添加信任站点和允许ActiveX批处理
有两种写法 1.如果是用IP reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMa ...
- PHP不能不看的50个细节!
1. 用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量, 单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的”函数”(译注:PHP ...
- jQuery源码分析-jQuery中的循环技巧
作者:nuysoft/JS攻城师/高云 QQ:47214707 EMail:nuysoft@gmail.com 声明:本文为原创文章,如需转载,请注明来源并保留原文链接. 前记:本文收集了jQuery ...