简单的数据库接口

 Step1:首先完成整个UI界面的额设计:

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>313</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralWidget">
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>320</x>
<y>220</y>
<width>51</width>
<height>27</height>
</rect>
</property>
<property name="text">
<string>Insert</string>
</property>
</widget>
<widget class="QTextEdit" name="textEdit">
<property name="geometry">
<rect>
<x>80</x>
<y>220</y>
<width>51</width>
<height>31</height>
</rect>
</property>
</widget>
<widget class="QTextEdit" name="textEdit_2">
<property name="geometry">
<rect>
<x>140</x>
<y>220</y>
<width>101</width>
<height>31</height>
</rect>
</property>
</widget>
<widget class="QTextEdit" name="textEdit_3">
<property name="geometry">
<rect>
<x>250</x>
<y>220</y>
<width>61</width>
<height>31</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>100</x>
<y>200</y>
<width>31</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>ID</string>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>170</x>
<y>200</y>
<width>65</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>NAME</string>
</property>
</widget>
<widget class="QLabel" name="label_3">
<property name="geometry">
<rect>
<x>260</x>
<y>200</y>
<width>65</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>TEMP</string>
</property>
</widget>
<widget class="QLabel" name="label_4">
<property name="geometry">
<rect>
<x>20</x>
<y>110</y>
<width>171</width>
<height>21</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
<italic>true</italic>
<underline>false</underline>
<strikeout>false</strikeout>
</font>
</property>
<property name="cursor">
<cursorShape>BlankCursor</cursorShape>
</property>
<property name="text">
<string>Designed by : mm1994uestc</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLabel" name="label_5">
<property name="geometry">
<rect>
<x>0</x>
<y>50</y>
<width>171</width>
<height>51</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>16</pointsize>
<italic>true</italic>
<underline>false</underline>
<strikeout>false</strikeout>
</font>
</property>
<property name="cursor">
<cursorShape>BlankCursor</cursorShape>
</property>
<property name="text">
<string>MySQL Control</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLabel" name="label_6">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>321</width>
<height>51</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>28</pointsize>
<italic>true</italic>
<underline>false</underline>
<strikeout>false</strikeout>
</font>
</property>
<property name="cursor">
<cursorShape>BlankCursor</cursorShape>
</property>
<property name="text">
<string>Qt interface Demo!</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLabel" name="label_7">
<property name="geometry">
<rect>
<x>20</x>
<y>220</y>
<width>51</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>Insert:</string>
</property>
</widget>
<widget class="QLabel" name="label_8">
<property name="geometry">
<rect>
<x>20</x>
<y>160</y>
<width>51</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>Search:</string>
</property>
</widget>
<widget class="QTextEdit" name="SearchInput">
<property name="geometry">
<rect>
<x>80</x>
<y>160</y>
<width>101</width>
<height>31</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_9">
<property name="geometry">
<rect>
<x>100</x>
<y>140</y>
<width>65</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>NAME</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_2">
<property name="geometry">
<rect>
<x>320</x>
<y>160</y>
<width>51</width>
<height>27</height>
</rect>
</property>
<property name="text">
<string>Search</string>
</property>
</widget>
<widget class="QLabel" name="SearchRes">
<property name="geometry">
<rect>
<x>230</x>
<y>160</y>
<width>81</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>Search Res</string>
</property>
</widget>
<widget class="QLabel" name="label_11">
<property name="geometry">
<rect>
<x>180</x>
<y>160</y>
<width>65</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>22</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>---&gt;</string>
</property>
</widget>
<widget class="QLabel" name="label_10">
<property name="geometry">
<rect>
<x>220</x>
<y>50</y>
<width>110</width>
<height>110</height>
</rect>
</property>
<property name="text">
<string> Cover</string>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>25</height>
</rect>
</property>
</widget>
<widget class="QToolBar" name="mainToolBar">
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
</widget>
<widget class="QStatusBar" name="statusBar"/>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
<connections/>
</ui>

界面的设计如右图所示

我们能够分析功能,在search中填入内容之后,点击search按钮就会根据程序中定义使用的mysql数据库的数据库以及表进行数据的查询工作,并将查询的结果输出到右侧的lable当中。

Step2:根据上述分析的MySQ_UI的功能设计,完成槽函数的定义和实现:

首先需要添加sql的核心模块(关于sql模块的安装参考我的另一篇博客:http://www.cnblogs.com/uestc-mm/p/8920525.html):

QT += core gui sql

下面首先是mainwindow.h文件的内容,包含了头文件:#include <QSqlDatabase>、#include <QSqlQuery>这两个MySQL数据库需要使用到的头文件;

声明定义了SLOT槽函数:void on_pushButton_clicked(bool checked)、void on_pushButton_2_clicked()

定义了私有成员变量db:  QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL")

#ifndef MAINWINDOW_H
#define MAINWINDOW_H #include <QMainWindow>
#include <QSqlDatabase>
#include <QDebug>
#include <QSqlQuery> namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_pushButton_clicked(bool checked);
void on_pushButton_2_clicked();
private:
Ui::MainWindow *ui;
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); // define the db via
};
#endif // MAINWINDOW_H

接着在mainwindow.cpp文件中对变量db进行初始化和MySQL数据库进行连接, 并实现对应的槽函数:

void MainWindow::on_pushButton_clicked(bool checked)
{
QString ID,NAME,TEMP;
ID = ui->textEdit->toPlainText(); // Get the input content
NAME = ui->textEdit_2->toPlainText();
TEMP = ui->textEdit_3->toPlainText();
qDebug() << "ID:" << ID << " " << "NAME:" << NAME << " " << "TEMP:" << TEMP; qDebug() << "Aviliable SQL drivers!";
QStringList drivers = QSqlDatabase::drivers(); //Getting the support databases,if do not have the database driver,we can not use this databse
foreach(QString driver,drivers)
qDebug() << driver; if(!db.open()) // Connect to the database
{
qDebug() << "failed to connect to the mysql database!";
}
else
{
qDebug() << "Mysql is successfully Opened!";
} QSqlQuery query(db); //Create a new query for db,use query to change the content QString Command_insert[] = {"insert into ","GanSu","BeiJing"," values(",")"};
QString Command = "";
Command = Command_insert[]+Command_insert[]+Command_insert[]+ID+","+"\""+NAME+"\""+","+TEMP+Command_insert[]; // Combine the command qDebug() << Command; query.exec(Command); // excute the command to control the database
} void MainWindow::on_pushButton_2_clicked()
{
if(!db.open())
{
qDebug() << "failed to connect to the mysql database!";
}
else
{
qDebug() << "Mysql is successfully Opened!";
} QSqlQuery query(db);
QString name,command;
QString Command_search[] = {"select * from GanSu where name=","'"}; name = ui->SearchInput->toPlainText();
qDebug() << name;
command = Command_search[] + Command_search[] + name + Command_search[]; qDebug() << command; query.exec(command); while(query.next()) // wait for database finish the command just now
{
int val1 = query.value().toInt();
QString val2 = query.value().toString(); // Getting the content in the query!
int val3 = query.value().toInt();
qDebug() << val1 << val2 << val3; ui->SearchRes->setText(query.value().toString()+query.value().toString()+query.value().toString());
}
}

完成上述操作就可以编译运行Qt程序了。

9、Qt Project之简单的数据库接口的更多相关文章

  1. Qt Project的持续集成方案

    作者:齐亮链接:http://www.zhihu.com/question/24314354/answer/27547787来源:知乎著作权归作者所有,转载请联系作者获得授权. PETER HARTM ...

  2. 在CentOS下面编译WizNote Qt Project

    编译环境 CentOS 64位 Desktop 版本:6.5 编译前的准备: CentOS的用户默认没有root权限,如果当前用户没有权限root,则可以在终端里面执行下面的命令: su root s ...

  3. Qt WebKit and HTML5 geolocation | Qt Project forums | Qt Project

    Qt WebKit and HTML5 geolocation | Qt Project forums | Qt Project Qt WebKit and HTML5 geolocation   I ...

  4. DOM Traversal Example | Documentation | Qt Project

    DOM Traversal Example | Documentation | Qt Project DOM Traversal Example

  5. 关于VS2017+Qt5.6.3(msvc2015_64)联合编程Qt project settings界面没有ok,cancel选项的问题

    如题,我在项目开发的过程中,需要添加数据库模块SQL,然后发现VS上QT project settings选项中不能修改添加的模块,也就是对应QT creator中的在.pro文件中添加一句:QT + ...

  6. QT 选择对话框简单示例

    QT 选择对话框简单示例 部分代码: pDialog->addSeparator(); QAction *pmb2 = pDialog->addAction(QString::fromLo ...

  7. qt project settings被禁用解决方案

    转载请注明出处:http://www.cnblogs.com/dachen408/p/7422707.html qt project settings被禁用点击不了: 解决方案:需要点击该项目(或者项 ...

  8. 使用QT实现一个简单的登陆对话框(纯代码实现C++)

    使用QT实现一个简单的登陆对话框(纯代码实现C++) 效果展示 使用的QT控件 控件 描述 QLable 标签 QLineEdit 行文本框 QPushButton 按扭 QHBoxLayout 水平 ...

  9. 使用qt制作一个简单的计算器

    前言:今天使用qt制作了一个很简单的计算器,觉得挺有意思的,所以在这里跟大家分享一下. 这里先跟大家说说使用到的函数: 一.槽连接函数 connect(信号发送者,发送的信号,信号接收者,信号接收者的 ...

随机推荐

  1. 弃 Java 而使用 Kotlin 的你后悔了吗?| kotlin将会是最好的开发语言

    自从 2011 年发布以来,Kotlin 凭借强大的功能在开发者中的欢迎程度与日俱增.且在一年前,Google 宣布 Kotlin 正式成为 Android 官方开发语言,由此引发了从 Java 迁移 ...

  2. swift 实践- 03 -- UILabel

    class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // 标签 let ...

  3. swift 学习- 26 -- 泛型

    // 泛型 代码能够让你根据自定义的需求,编写出适用于任意类型, 灵活可重用的函数以及类型, 它能让你避免代码的重复, 用一种清晰和抽象的方式来表达代码的意图 // 泛型是 Swift 最强大的特性之 ...

  4. Modbus库开发笔记之四:Modbus TCP Client开发

    这一次我们封装Modbus TCP Client应用.同样的我们也不是做具体的应用,而是实现TCP客户端的基本功能.我们将TCP客户端的功能封装为函数,以便在开发具体应用时调用. 对于TCP客户端我们 ...

  5. Confluence 6 从一个 XML 备份中导入一个空间

    有下面 2 中方法可以导入一个空间——通过上传一个文件,或者从你 Confluence 服务器上的一个目录中导入.上传文件仅仅是针对一个小站点的情况.为了取得最好的导入结果,我们推荐你从服务器上的目录 ...

  6. Confluence 6 用自带的用户管理

    在一些特定的情况下,你可能希望禁用 Confluence 自带的用户管理或完全使用外部的用户目录进行用户管理.例如 Jira 软件或者 Jira Service Desk.你可以在 Confluenc ...

  7. error: js/dist/app.js from UglifyJs Unexpected token: name (Dom7)

    What you did I have installed Swiper as normal dependency in my Project and import it to my scripts ...

  8. svn上check下来的项目,用idea打开,菜单栏没有svn工具解决办法

    1.用idea打开你的项目(idea已经配置过小乌龟了) 2.菜单栏点击VCS,Enable Version Control Integration... 3.选择Subversion 4.这时候,菜 ...

  9. 前端基础之初识HTML

    一.web服务的本质 import socket def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.b ...

  10. jacoco + eclipse单元测试覆盖率

    概念 Jacoco:JaCoCo是一个开源的覆盖率工具,它针对的开发语言是java,其使用方法很灵活,可以嵌入到Ant.Maven中:可以作为Eclipse插件,可以使用其JavaAgent技术监控J ...