Qt与java web通过数据库实现数据展示同步
生活随笔
收集整理的這篇文章主要介紹了
Qt与java web通过数据库实现数据展示同步
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
程序運行截圖如下:
?
邏輯:
Qt修改數據庫,java通過Hibernate讀取數據庫,然后顯示,前端通過計時器實現不點刷新就能獲取數據!
?
Qt源碼如下:
widget.h
#ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QSqlDatabase>QT_BEGIN_NAMESPACE class QSqlQuery; QT_END_NAMESPACEnamespace Ui { class Widget; }class Widget : public QWidget {Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();protected slots:void textChanged(QString text);private:Ui::Widget *ui;QSqlDatabase m_db;QSqlQuery *m_query; };#endif // WIDGET_Hmain.cpp
#include "widget.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); }widget.cpp
#include "widget.h" #include "ui_widget.h" #include <QDebug> #include <QSqlQuery> #include <QVariant>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);this->setWindowTitle("CSDN IT1995");m_db = QSqlDatabase::addDatabase("QMYSQL");m_db.setHostName("localhost");m_db.setDatabaseName("candjavadb");m_db.setUserName("root");m_db.setPassword("root");if(m_db.open()){qDebug()<< "open success!";}else{qDebug()<< "open fail";}m_query = new QSqlQuery(m_db);connect(ui->lineEdit, SIGNAL(textChanged(QString)), this, SLOT(textChanged(QString))); }Widget::~Widget() {delete ui; }void Widget::textChanged(QString text) {m_query->prepare("update test set data=? where id=?");m_query->addBindValue(text);m_query->addBindValue("0");m_query->exec(); }?
java相關代碼:
先是前端:
db.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><base href="<%=basePath%>"><title>數據庫操作</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--><script src="jquery/jquery.js"></script><script src="bootstrap/js/bootstrap.min.js"></script><script src="jquery/jquery.timer.js"></script><script >function trace( msg ){ try{ console.log(msg); } catch(err){ }}function onQuery(){jQuery.ajax({ method: "GET", url: "servlet/WebDB",success: function(data, textStatus, jqXHR){$("#userCount").html(data);},error: function( jqXHR, textStatus, errorThrown){trace( "error: " + errorThrown ); }});}// 頁面加載后的初始化工作$(document).ready( function(){var timerId = $.timer(1000, onQuery, false);});</script></head><body><div class="container"><p> 區域負荷 <span id="userCount"> 0 </span> </p></div></body></body> </html>servlet/WebDB中只修改了doGet方法:
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {float data = new RegionalLoad().count();String replyText = String.valueOf(data);response.setContentType("text/plain");response.setCharacterEncoding("UTF-8");PrintWriter out = response.getWriter();out.write(replyText);out.close();}RegionalLoad.java
package my; import my.db.*; import org.hibernate.Session;public class RegionalLoad {public float count(){Session dbss = null;float floatData = 0.0f;try{dbss = HibernateSessionFactory.getSession();Integer rowID = new Integer(0);Test row = (Test)dbss.get(Test.class, rowID);if(row == null){System.out.println("找不到記錄!");}else{floatData = row.getData();}}catch(Exception e){System.out.println("出錯:" + e.getMessage());e.printStackTrace();}finally{if(dbss != null)dbss.close();}return floatData;} }?
新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!總結
以上是生活随笔為你收集整理的Qt与java web通过数据库实现数据展示同步的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: staf工作笔记-扩展stax官方实例的
- 下一篇: Qt学习笔记-SQL的基本操作【创建、查