发布网友 发布时间:2022-04-21 21:30
共3个回答
懂视网 时间:2022-05-02 07:19
=C:/Users/WangGang/Desktop/Database1.accdb DBUserName= DBPassword= GameIp=192.168.1.152 GamePort=3000 4DSystemIp=192.168.1.152 4DSystemPort=21392 UdpDataToGame=StartGame UdpDataTo4DSystem=AS%NPlayDirect%1%工程文件中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 = 0); ~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() > 0 ) { 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(1).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 = 0; 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数据库
标签:mds ati error int() push declare read pap set
热心网友 时间:2022-05-02 04:27
远程连接access数据库的几个方法:
1建立VPN(Virtual Private Network),这样你的电脑和主机的连接就与局域网无异,然后把服务器中mdb文件所在的 Folder共享即可。ADO连接如下:
(以下为引用的内容):
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=ServerNameDatabaseFolderDatabase.mdb;Jet OLEDB:Database
Password=databasepw;Persist Security Info=False"
2.把Database放在Web Server上,使ADO或RDO通过RDS(Remote Data Service)及IIS来实现:
如果服务器像上面Jave大侠说那样设置了ODBC DSN的话:
下面是代码片段:
(以下为引用的内容):
oConn.Open "Provider=MS Remote;" & _
"Remote Server=http://myServerName;" & _
"Remote Provider=MSDASQL;" & _
"DSN=AdvWorks;" & _
"Uid=myUsername;" & _
"Pwd=myPassword"
如果设置的是OLE DB Provider 的话:
(以下为引用的内容):
oConn.Open "Provider=MS Remot
热心网友 时间:2022-05-02 05:45
如果用ACCESS开发的数据库通常通过内网连接很容易。
直接用链接表链接共享文件夹中的ACCESS数据库中的表就可以。
如果是要*连接,现在的一般做法是用一台装了IIS的电脑当主机。
在主机的IIS目录里面放ASP开发的网页连接主机上的ACCESS数据库。
*浏览网页实现对数据库的操作。