QT与MySQL的连接,QT设计注册和登录页面

文章详细介绍了在Windows环境下安装MySQL,以及在QT中配置MySQL驱动的过程,包括修改mysql.pro和qsqldriverbase.pri文件以链接到MySQL库。此外,还展示了如何使用QT进行数据库操作,如创建表和插入数据。最后,文中给出了UI界面设计的部分代码,涉及用户注册信息的存储和验证。
摘要由CSDN通过智能技术生成

1.首先需要安装mysql

(1)如何查看mysql电脑里的安装位置:

window+R

 

(2)qt 与MySQL的驱动

1.需要安装源码:运行安装mysql.pro,在D:\plugins\sqldrivers,将D:\plugins\sqldrivers目录下的qsqlmysql.dll文件复制到D:\deve_qt\5.12.12\mingw73_64\plugins\sqldrivers

#在mysql.pro中修改
TARGET = qsqlmysql
HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp
#QMAKE_USE += mysql
INCLUDEPATH += $$quote("D:\\mysql\\mysql-8.0.27-winx64\\include")	#本机mysql的include目录
LIBS += -L$$quote("D:\\mysql\\mysql-8.0.27-winx64\\lib") -lmysql	#本机mysql的lib目录
OTHER_FILES += mysql.json
PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
#指定这个文件的绝对地址,具体这个路径的位置你可以看下图"qsqldriverbase.pri的路径"
include(D:\\deve_qt\\5.12.12\\Src\\qtbase\\src\\plugins\\sqldrivers\\qsqldriverbase.pri)
include(../qsqldriverbase.pri)
#在qsqldriverbase.pri中修改
QT  = core core-private sql-private
# For QMAKE_USE in the parent projects.
#include($$shadowed($$PWD)/qtsqldrivers-config.pri)
include(./configure.pri)
PLUGIN_TYPE = sqldrivers
load(qt_plugin)
DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII

 

#include "widget.h"
#include "ui_widget.h"
#include <QtSql/QSqlDatabase>	// 连接数据库
#include <QtSql/QSqlError>		// 数据库连接失败打印报错语句
#include <QtSql/QSqlQuery>		// 数据库操作(增删改查)
#include <QMessageBox>
#include <QVariantList>			// 泛型链表,可以存储任何类型的数据
#include <QDebug>
#include <QtSql>
#include <QApplication>
#include <QSqlDatabase>

#include <QStringList>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setPort(3306);
    db.setDatabaseName("baby128");
    db.setUserName("root");
    db.setPassword("123456");
    db.open();
    bool ok = db.open();
    if (ok){
    QMessageBox::information(this, "infor", "link success");
    }
    else {
    QMessageBox::information(this, "infor", "link failed");
    qDebug()<<"error open database because"<<db.lastError().text();
    }

    QSqlQuery result = db.exec("select * from baseinfor");

    for(int i=0; i<3; i++) {
        result.next();
        qDebug() << result.value("no").toString()  << '\\t' << result.value("name").toString() << '\\t'
        << result.value("passWord").toString() << '\\t' << result.value("other").toString() << endl;
    }

    result.clear();

}

Widget::~Widget()
{
    delete ui;
}

(2)qt creator 

1.ui界面设计

void RegeditWindow::on_regSubPb_clicked()
{
    QString username = ui->usernameRegTxt->text().trimmed();
    QString year=ui->year->text().trimmed();
    QString pwd1 = ui->pwd1RegTxt->text().trimmed();
    QString pwd2 = ui->pwd2RegTxt->text().trimmed();
    QString xb=ui->sex->text().trimmed();
    QString jg=ui->native_2->text().trimmed();



if(pwd1.isEmpty()||pwd2.isEmpty()||username.isEmpty()||year.isEmpty()||xb.isEmpty()||jg.isEmpty()){
}
    else{
        if(pwd1==pwd2){
            // 存储格式 字符串 用户名,密码
//            UserData::usernameandpwd2 = username+","+pwd1;
            //
           // QSettings cfg(QSettings::IniFormat,QSettings::UserScope,"config");
            //cfg.setValue("username",username);
            //cfg.setValue("pwd",pwd1);
            //qDebug()<< "regedit successfully!";
            //this->parentWidget()->show();
            //delete this;
            if(UserData::connect("baby128"))
                        {
                            QSqlQuery sqlQuery;
                            bool is_table_exist = sqlQuery.exec("select * from tbllogin");
                            if(!is_table_exist){

                                sqlQuery.exec("CREATE TABLE tbllogin (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(10),pwd VARCHAR(10),year VARCHAR(10),xb VARCHAR(10),jg VARCHAR(10))");
                             qDebug()<<"create";


                            }
                            sqlQuery.exec("SELECT id,name,pwd,year,xb,jg FROM tbllogin");
                            while (sqlQuery.next()){
                                int id = sqlQuery.value(0).toInt();
                                QString name = sqlQuery.value(1).toString();
                                QString pwd = sqlQuery.value(2).toString();
                                QString year = sqlQuery.value(3).toString();
                                QString xb = sqlQuery.value(4).toString();
                                QString jg= sqlQuery.value(5).toString();
                                max_id++;
                                 qDebug()<<id<<" "<<name<<" "<<pwd<<" "<<year<<" "<<xb<<" "<<jg<<" ";
                            }
                            QSqlQuery sqlquery;
                            sqlquery.prepare("INSERT INTO tbllogin VALUES(?,?,?,?,?,?)");
                            sqlquery.addBindValue(max_id+1);
                            sqlquery.addBindValue(username);
                            sqlquery.addBindValue(pwd1);
                            sqlquery.addBindValue(year);
                            sqlquery.addBindValue(xb);
                            sqlquery.addBindValue(jg);
                            if(sqlquery.exec()){
                                qDebug()<<"regedit successfully!";


                                this->parentWidget()->show();
                                delete this;
                            }
                            else{
                                qDebug()<<sqlquery.lastError();
                        }
                       }
                        else{

            }
                       }
                   }

}

 

void MainWindow::on_submitPb_clicked()
{
    QString username = ui->usernameTxt->text().trimmed();
    QString pwd = ui->pwdTxt->text().trimmed();
     //    if(QString::compare(UserData::usernameandpwd2,username+","+pwd)==1)
    //QSettings cfg(QSettings::IniFormat,QSettings::UserScope,"config");
    //QString usernameIni = cfg.value("username","null").toString();
    //QString pwdIni = cfg.value("pwd","null").toString();
    //if(username==usernameIni&&pwd==pwdIni)
    //{
      //  qDebug()<<"Login in!";
        //HomeWindow *homewindow = new HomeWindow(this);
        //homewindow->show();
        //this->hide();
    //}
    // else{
    //   qDebug()<<"data wrong!";
    //}
    if(UserData::connect("baby128"))
    {
        QSqlQuery sqlQuery;
        bool is_table_exist = sqlQuery.exec("select * from tbllogin");
        if(!is_table_exist){
            sqlQuery.exec("CREATE TABLE tbllogin (id INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20),password VARCHAR(20))");
        }
        QSqlQuery sqlquery;

       sqlquery.prepare("SELECT * FROM tbllogin where name=:name and pwd=:pwd");
       sqlquery.bindValue(":name",username);
       sqlquery.bindValue(":pwd",pwd);
       sqlquery.exec();
       QString result;
    while(sqlquery.next())
    {

        result+="用户名:"+sqlquery.value(1).toString()+'\t'+"密码:"+sqlquery.value(2).toString()+'\n';
        qDebug()<<"Login in!"+result;
        HomeWindow *homewindow = new HomeWindow(this);
        homewindow->show();
        this->hide();
    }

    }

}

(3)运行结果

结果:实现了qt与MySQL的连接,并且可以将qt 的注册信息存储在数据库里面。

遇到问题,我们一起讨论

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值