QT 数据库编程一

QT如果要进行网络编程首先需要在.pro中添加如下代码:QT += network

//logindlg.h
#ifndef LOGINDLG_H
#define LOGINDLG_H

#include <QDialog>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>

class loginDlg : public QDialog
{
    Q_OBJECT
public:
    explicit loginDlg(QWidget *parent = 0);

signals:

public slots:

private:
    QLabel *label1,*label2,*label3,*label4;
    QLineEdit *edit1,*edit2,*edit3,*edit4;
    QPushButton *btn1,*btn2;
private slots:
    void btn1_click();
    void btn2_click();
public:
    QString username;
    QString userpass;
    QString dbname;
    QString ipaddr;
    /*判断用户是否点击登录按钮*/
    bool islogin;

};

#endif // LOGINDLG_H
//mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMenu>
/*QMenuBar:菜单栏*/
#include <QMenuBar>
#include <QAction>
#include <QCloseEvent>
#include <QMdiArea>

#include "vmysql.h"



class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
private:
    Vmysql *sqlhelper;
    QMenu * menu1;
    QMenu * menu2;
    QMenu * menu3;
    QMenu * menu4;
    QAction *login_in,*login_out,*quit1;
    QAction *addstation,*addstationcontrl,*addMSC;
    QAction *delstation,*delstationcontrl,*delMSC;
    QAction *sestation,*sestationcontrl,*seMSC;
    QAction *upstation,*upstationcontrl,*upMSC,*exscript;
    QAction *cascade1,*parallel;
    QAction *helper,*mabout;
    QMdiArea *mdiarea1;


    /*初始化菜单项*/
    void initmenubar();
    /*退出函数*/
    void closeEvent(QCloseEvent *event);
    /*未登录设置所有SQL按钮不可用*/
    void close_action();
    /*设置所有SQL按钮可用*/
    void open_action();
    /*执行SQL操作*/
    void exec_query(const char *strsql);
    /*判断SQL操作的类型*/
    bool judge_sqltype(const char *strsql);
    /*创建显示view*/
    void display_view(const char *actionname,QStandardItemModel *model);

private slots:
    //登录事件
    void login_inclick();
    //注销事件
    void login_outclick();
    //退出事件
    void quit_click();
    /*添加基站*/
    void add_station();
    /*添加基站控制器*/
    void add_stationcontrl();
    /*添加MSC*/
    void add_MSC();
    /*删除基站*/
    void del_station();
    /*删除基站控制器*/
    void del_stationcontrl();
    /*删除MSC*/
    void del_MSC();
    /*查询基站*/
    void sel_station();
    /*查询基站控制器*/
    void sel_stationcontrl();
    /*查询MSC*/
    void sel_MSC();
    /*修改基站*/
    void update_station();
    /*修改基站控制器*/
    void update_stationcontrl();
    /*修改MSC*/
    void update_MSC();
    /*执行脚本*/
    void exec_script();
    /*层叠窗口*/
    void cascade_window();
    /*并列窗口*/
    void parallel_window();
    /*帮助*/
    void helper_click();
    /*关于*/
    void mabout_click();

};

#endif // MAINWINDOW_H
//scriptdlg.h
#ifndef SCRIPTDLG_H
#define SCRIPTDLG_H

#include <QDialog>
#include <QLabel>
#include <QTextEdit>
#include <QPushButton>

class ScriptDlg : public QDialog
{
    Q_OBJECT
public:
    explicit ScriptDlg(QWidget *parent = 0);
    QString strsql;
    bool isexec;

signals:

public slots:
private:
    QLabel *label1;
    QTextEdit *tedit1;
    QPushButton *btn1,*btn2;
private slots:
    void btn1_click();
    void btn2_click();

};

#endif // SCRIPTDLG_H
//vmysql.h
#ifndef VMYSQL_H
#define VMYSQL_H

/*mysql属于TCP/IP协议,所以需要使用socket,
 * windows下的socket与linux下不同,在windows.h文件下
 * SOCKET listen_st;--windows下定义socket描述符*/
#include <windows.h>

#include <C:/mysql/include/mysql.h>
#include <QStandardItemModel>


/*封装所有和mysql相关函数*/
class Vmysql
{
public:
    Vmysql();
    ~Vmysql();
    /*连接数据库*/
    int sql_connect(const char *hostname,const char *username,const char *passwd,const char *dbname);
    /*断开数据库连接*/
    void sql_disconnect();
    /*执行SQL更新*/
    int sql_exec(const char *strsql);
    /*执行SQL查询*/
    int sql_query(const char *strsql,QStandardItemModel **model);
    /*错误信息*/
    const char *ger_error();
private:
    MYSQL mysql1;
    MYSQL *connection;
    char errorbuf[1024];
};

#endif // VMYSQL_H
原文地址:https://www.cnblogs.com/zhanggaofeng/p/6056889.html