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

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
    评论
要在 Qt连接 MySQL 数据库,需要使用 Qt 的 SQL 模块和 MySQL 驱动程序。以下是一个简单的示例,向您展示如何在 Qt连接 MySQL 数据库并进行登录注册: 首先,在 Qt Creator 中创建一个新项目,并在项目中包含 Qt SQL 模块和 MySQL 驱动程序。在项目文件(.pro)中添加以下行: ``` QT += sql QT += mysql ``` 接下来,在 main.cpp 文件中,添加以下代码来连接MySQL 数据库: ``` #include <QCoreApplication> #include <QtSql> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); // MySQL 服务器地址 db.setDatabaseName("mydatabase"); // 数据库名称 db.setUserName("myusername"); // 用户名 db.setPassword("mypassword"); // 密码 if (db.open()) { qDebug() << "Connected to database!"; } else { qDebug() << "Failed to connect to database!"; } return a.exec(); } ``` 这将连接到名为“mydatabase”的 MySQL 数据库,并使用用户名“myusername”和密码“mypassword”进行身份验证。如果连接成功,将在控制台中输出“Connected to database!”。 接下来,您可以使用 QSqlQuery 类执行 SQL 查询。下面是一个例子,展示如何使用 QSqlQuery 插入一个新用户记录: ``` QSqlQuery query; query.prepare("INSERT INTO users (username, password) VALUES (:username, :password)"); query.bindValue(":username", "newuser"); query.bindValue(":password", "newpassword"); if (query.exec()) { qDebug() << "New user created!"; } else { qDebug() << "Failed to create new user!"; } ``` 这将在名为“users”的表中插入一个新记录,其中包括用户名“newuser”和密码“newpassword”。 最后,您可以使用 QSqlQuery 查询现有用户记录,检查用户名和密码是否正确。下面是一个例子,展示如何使用 QSqlQuery 执行选择查询: ``` QSqlQuery query; query.prepare("SELECT * FROM users WHERE username = :username AND password = :password"); query.bindValue(":username", "existinguser"); query.bindValue(":password", "existingpassword"); if (query.exec() && query.next()) { qDebug() << "Login successful!"; } else { qDebug() << "Login failed!"; } ``` 这将查询名为“users”的表,找到用户名为“existinguser”且密码为“existingpassword”的记录。如果找到记录,则输出“Login successful!”,否则输出“Login failed!”。 这些代码片段只是一个起点,您可以根据自己的需要进行修改和扩展。希望这可以帮助您开始在 Qt连接 MySQL 数据库并实现登录注册功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值