QT MySQL数据库增删查改

一、实现代码

#include <QCoreApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlRecord>
#include <QSqlError>
#include <QtDebug>
#include <string>

const char *kDbType = "QMYSQL";      // 数据库类型
const QString& kHost = "127.0.0.1";  // 数据库的ipd地址
const int kPort = 3306;              // 数据库端口号
const QString& kUsername = "root";   // 数据库账号
const QString& kPassword = "123456"; // 数据库密码
//const QString& dbname = "test";    // 数据库名

class DBSql{

private:
    QSqlDatabase db;    // 数据库操作对象
    QSqlError error;    // SQLError对象
    bool flag;          // 判断函数是否执行
    bool DBInit(){
        db = QSqlDatabase::addDatabase(kDbType);
        db.setHostName(kHost);
        db.setPort(kPort);
        db.setUserName(kUsername);
        db.setPassword(kPassword);
        QString sqlname = "数据库连接";
        flag = db.open();
        sqlerror(flag,NULL,sqlname);
        return flag;
    }
    void sqlerror(bool flag,QString sql,QString sqlname){
        QSqlQuery query(db);
        if(flag){
            qDebug() << sqlname+"成功!" << sql;
        }else{
            error = query.lastError();
            qDebug() << sqlname+"失败!" << sql << error.driverText() << error.databaseText();
        }
    }
public:

    // 构造函数,初始化数据库连接
    DBSql(){
        this->DBInit();
    }
    // 设置数据库名
    void setDatabase(const QString& dbname){
        db.setDatabaseName(dbname);
        db.open();
    }
    // 查询表字段数
    int sqlRecord(const QSqlQuery query){
        //QSqlQuery query(db);
        QSqlRecord record = query.record();
        int const n = record.count();
        qDebug()<<"表的字段总数为:"<< n;
        return n;
    }
    // 增加记录
    bool sqlInsert(const QString& sql){
        QSqlQuery query(db);
        flag = query.exec(sql);
        sqlerror(flag,sql,"增加记录");
        return flag;
    }
    // 删除记录
    bool sqlDelete(const QString& sql){
        sqlerror(flag,sql,"删除记录");
        return flag;
    }
    // 查询记录
    bool sqlQuery(const QString& sql){
        db.open();
        QSqlQuery query(db);
        query.exec(sql);
        int count = sqlRecord(query);
        qDebug()<<"count"<<count;
        while(query.next()){
            int i = 0;
            int n = count;
            QString string;
            QList<QString> list;
            QSet<QString> set;
            QMap<int,QString> map;
            QHash<int,QString> hash;
            QStringList slist;
            QVector<QString> vector;
            //QStack<int> stack;
            //QLinkList<QString> linklist;
            //QQueue<int> queue;
            //QLine::QLine(int x1, int y1, int x2, int y2);
            QListIterator<QString> qlistiter(list);

            while(n-->0){
                string.append(query.value(i).toString().append("   "));
                list.append(query.value(i).toString());
                slist.append(query.value(i).toString());
                ++i;
            }
            qDebug()<<string;
            //qDebug()<<qlist;
            qDebug()<<slist;
            //qDebug()<<query.value(0).toString()<<query.value(1).toString()<<query.value(2).toString();
        }
        sqlerror(flag,sql,"查询记录");
        return flag;
    }
    // 修改记录
    bool sqlUpdata(const QString& sql){
        QSqlQuery query(db);
        query.prepare(sql);    // sql = "updata user set name='汪东城' where id=11";
        flag = query.exec();
        sqlerror(flag,sql,"插入记录");
        return flag;
    }
    void dbClose(){
        if(db.isOpen()){
            printf("The database is closed!\n");
            db.close();
        }
    }
    void show(){
        printf("This is show methed.\n");
    }
};


int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    DBSql dbsql;
    dbsql.setDatabase("test");


    QString sqlinsert = "";
    QString sqldelete = "";
    QString sqlquery = "select * from user";
    QString sqlupdate = "";
    //dbsql.sqlInsert(sqlinsert);
    //dbsql.sqlDelete(sqldelete);
    dbsql.sqlQuery(sqlquery);
    //dbsql.sqlUpdata(sqlupdate);

    dbsql.dbClose();
    dbsql.show();

    return a.exec();
}

 二、运行结果

发布了141 篇原创文章 · 获赞 40 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq262593421/article/details/105000719