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

来源:互联网 发布:python股票分析系统 编辑:程序博客网 时间:2024/06/06 00:43
服务端源码下载地址为:

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_OBJECTpublic:    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();    //断开MySQLsignals: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的方法,其实有更好的方法。


1 0