首先在qt中使用数据库,需要我们根据qt源码自行编译库,具体编译细节请参考Qt 中编译数据库驱动 | 爱编程的大丙 (subingwen.cn)(如有侵权,请联系我删除)。
前提:在mysql添加一个db1数据库,在db1内添加一个fam表:
create database db1;
use db1;
create table fam(
-> id int primary key,
-> name varchar(20),
-> address varchar(40),
-> age int,
-> gender varchar(20));
mysql> show tables;
+---------------+
| Tables_in_db2 |
+---------------+
| fam |
+---------------+
1 row in set (0.00 sec)
mysql> desc fam;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id | int | NO | PRI | NULL | |
| name | varchar(20) | YES | | NULL | |
| address | varchar(40) | YES | | NULL | |
| age | int | YES | | NULL | |
| gender | varchar(20) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
mysql> insert into fam (id,name,address,age,gender) values(0,'tom','shanghai',20,'male');
Query OK, 1 row affected (0.00 sec)
mysql> insert into fam (id,name,address,age,gender) values(1,'liutao','shanghai',23,'male');
Query OK, 1 row affected (0.00 sec)
mysql> insert into fam (id,name,address,age,gender) values(2,'bin','suzhou',25,'male');
Query OK, 1 row affected (0.00 sec)
mysql> insert into fam (id,name,address,age,gender) values(3,'hong','suzhou',34,'female');
Query OK, 1 row affected (0.00 sec)
mysql> select * from fam;
+----+--------+----------+------+--------+
| id | name | address | age | gender |
+----+--------+----------+------+--------+
| 0 | tom | shanghai | 20 | male |
| 1 | liutao | shanghai | 23 | male |
| 2 | bin | suzhou | 25 | male |
| 3 | hong | suzhou | 34 | female |
+----+--------+----------+------+--------+
4 rows in set (0.00 sec)
mysql>
好了,现在我们数据库里有这样一个表:
下面我们通过qt写一个小demo实现对数据库的一些简单操作:
1.首先在pro文件中添加 sql ;
QT += core gui sql
ui界面设计如下:
具体功能:通过connect连接数据库,show显示数据库内具体的数据,add将各个lineedit内的信息添加到数据库内的表内,update进行表内数据更新。
头文件如下:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include<QSqlDatabase>
#include<QSqlError>
#include<QDebug>
#include <QMainWindow>
#include<QMessageBox>
#include <QSqlQuery>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_pushButton_5_clicked();
void on_pushButton_6_clicked();
void on_pushButton_clicked();
void on_pushButton_2_clicked();
void on_pushButton_4_clicked();
void on_pushButton_3_clicked();
private:
Ui::MainWindow *ui;
QSqlDatabase db;
};
#endif // MAINWINDOW_H
前提我们已经编译好需要的动态(静态)库&#