大三软件工程小项目-小技术集合-服务端连接MySQL及对表插入、删除、查询

583 篇文章 127 订阅
36 篇文章 23 订阅
服务端源码下载地址为:

http://download.csdn.net/detail/qq78442761/9768662


这连接数据库之前,先要保证数据库是开启状态,如下图所示:


随后就可以用服务端登录了。

如下图所示:



我们先来看下此程序中关于mysql的代码:

connmysql.h

#ifndef CONNMYSQL_H
#define CONNMYSQL_H

#include <QObject>
#include <QDebug>
#include <QStringList>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QString>
#include <QMessageBox>
#include <QSqlQueryModel>
#include <QTableView>
#include <QVariant>

//返回两个值
struct QStringAndBool
{
    QString MesQString;
    bool MesBool;
};


class ConnMysql : public QObject
{
    Q_OBJECT
public:
    explicit ConnMysql(QString UserName,QString PassWd,QString DataBase,QObject *parent = 0);
    QStringAndBool LinkMySQL();   //连接MYSQL
    void SelectTable(QString selectQString); //查询数据库
    void DelectUser(int UserID);  //删除用户
    void InsertUser(QString userName,char *temp2); //添加用户
    void DisLinkMysql();    //断开MySQL
signals:

public slots:

private:
    QString m_UserName; //登录MySQL用户名
    QString m_PassWd;   //登录MySQL密码
    QString m_DataBase; //登录到的个数据库

    QSqlDatabase db;
    QSqlQueryModel *model;  //查询数据库
    QTableView *view;   //显示查询表
};

#endif // CONNMYSQL_H
connmysql.cpp
#include "connmysql.h"

ConnMysql::ConnMysql(QString UserName, QString PassWd,QString DataBase,QObject *parent)
    : QObject(parent)
{
    m_UserName=UserName;
    m_PassWd=PassWd;
    m_DataBase=DataBase;
    model=new QSqlQueryModel;
    view=new QTableView;
}
void ConnMysql::DisLinkMysql()
{
    QString SqlQuery="exit";
    model->setQuery(SqlQuery);
}

void ConnMysql::DelectUser(int UserID)  //用户ID
{
    QString SqlQuery="delete from user where id=";
    SqlQuery.append(QString::number(UserID));
    //qDebug()<<SqlQuery;
    model->setQuery(SqlQuery);
}

void ConnMysql::InsertUser(QString userName, char *temp2)
{
    qDebug()<<userName;
    qDebug()<<temp2;
    char buf[1024]="insert into user values(NULL,'";
    strcat(buf,userName.toUtf8().data());
    strcat(buf,"','");
    int il=strlen(buf);
    buf[il]=*temp2;
    qDebug()<<"buf[il]"<<buf[il];
    strcat(buf,"',");

    il=strlen(buf);
    for(int i=0;i<7;i++)
        buf[il+i]=temp2[1+i]+48;
    strcat(buf,")");
    qDebug()<<buf;
    model->setQuery(buf);
}

void ConnMysql::SelectTable(QString selectQString)
{
    model->setQuery(selectQString);
    model->setHeaderData(0,Qt::Horizontal,"id");
    model->setHeaderData(1,Qt::Horizontal,"角色");
    model->setHeaderData(2,Qt::Horizontal,"等级");
    model->setHeaderData(3,Qt::Horizontal,"金币");
    view->setModel(model);
    view->setMinimumWidth(430);
    view->show();
}

QStringAndBool ConnMysql::LinkMySQL()
{
    db=QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName(m_DataBase);
    db.setUserName(m_UserName);
    db.setPassword(m_PassWd);
    QStringAndBool returnValues;
    if(!db.open())
    {
        QMessageBox::information(NULL,"提示","数据库连接失败!");
        returnValues.MesQString="数据库连接失败!";
        returnValues.MesBool=0;
        return returnValues;

    }
     else
    {
        QMessageBox::information(NULL,"提示","数据库连接成功!",QMessageBox::Ok);
        returnValues.MesQString="数据库连接成功!";
        returnValues.MesBool=1;
        return returnValues;
    }
}



我们可以看见构造函数里面要传入用户名,密码和要传入的库

在mainwindow.cpp里面可以看见他是这样调用的

void MainWindow::LoginMysql()
{
    if(ui->SQLUserlineEdit->text()==""&&ui->SQLPasswdlineEdit->text()==""&&ui->DataBaselineEdit->text()=="")
    {
        QMessageBox::information(this,"提示","有一项为空,请填写完整",QMessageBox::Yes);
        ui->CMDplainTextEdit->appendPlainText(CurrTime::currentDateTime()+"用户登录输入未完整");
    }
    else
    {
        Mysql=new ConnMysql(ui->SQLUserlineEdit->text(),ui->SQLPasswdlineEdit->text(),ui->DataBaselineEdit->text());
        MysqlLinkValues=Mysql->LinkMySQL();
        SetBtn(MysqlLinkValues.MesBool);
        ui->CMDplainTextEdit->appendPlainText(CurrTime::currentDateTime()+MysqlLinkValues.MesQString);
    }
}


这里的对表进行操作插入、删除、查询

void ConnMysql::DisLinkMysql()
{
    QString SqlQuery="exit";
    model->setQuery(SqlQuery);
}

void ConnMysql::DelectUser(int UserID)  //用户ID
{
    QString SqlQuery="delete from user where id=";
    SqlQuery.append(QString::number(UserID));
    //qDebug()<<SqlQuery;
    model->setQuery(SqlQuery);
}

void ConnMysql::InsertUser(QString userName, char *temp2)
{
    qDebug()<<userName;
    qDebug()<<temp2;
    char buf[1024]="insert into user values(NULL,'";
    strcat(buf,userName.toUtf8().data());
    strcat(buf,"','");
    int il=strlen(buf);
    buf[il]=*temp2;
    qDebug()<<"buf[il]"<<buf[il];
    strcat(buf,"',");

    il=strlen(buf);
    for(int i=0;i<7;i++)
        buf[il+i]=temp2[1+i]+48;
    strcat(buf,")");
    qDebug()<<buf;
    model->setQuery(buf);
}

void ConnMysql::SelectTable(QString selectQString)
{
    model->setQuery(selectQString);
    model->setHeaderData(0,Qt::Horizontal,"id");
    model->setHeaderData(1,Qt::Horizontal,"角色");
    model->setHeaderData(2,Qt::Horizontal,"等级");
    model->setHeaderData(3,Qt::Horizontal,"金币");
    view->setModel(model);
    view->setMinimumWidth(430);
    view->show();
}


这里的话有一个不太好的地方,就是当要对数据库进行操作的时候,我这采用字符串重组,这是比较low的方法,其实有更好的方法。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT1995

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值