zoukankan      html  css  js  c++  java
  • qt查询mysql数据库读不到数据

    查了很多方法,也没找到原因,把以前写过的放进来就好了,我开始也是这么写的  ,只不过没加isok做判断,没有进一步测试,希望对你们有帮助。

    QSqlQuery MysqlSingleton::select(QString sql)
    {
        QSqlQuery query(dbconn);
    
        mutex.lock();
        bool isok = query.exec(sql);
        mutex.unlock();
    
        if(!isok)
        {
            cout << QString("查询失败!%1").arg(query.lastError().text());
        }
        else
        {
            cout << "start select";
    /*这一块放到读取数据的地方
    while(query.next()) { QString id = query.value(0).toString(); QString name = query.value(1).toString(); QString age = query.value(2).toString(); cout <<"id:" <<id<<" name:" <<name<<" age:" <<age; }
    */ }
    return query; }

    顺便存一下增删改

    void MysqlSingleton::operateDB(QString sql)
    {
        QSqlQuery query(dbconn);
    
        mutex.lock();
        if(!query.exec(sql))
        {
            qDebug() << "Error: Fail to insert ." << query.lastError();
        }
        mutex.unlock();
    
    
    
    }
    void MysqlSingleton::insertSQL(QString sql){    operateDB(sql); cout << "insert OK";}
    void MysqlSingleton::deleteSQL(QString sql){    operateDB(sql); cout << "delete OK";}
    void MysqlSingleton::updateSQL(QString sql){    operateDB(sql); cout << "update OK";}

    sql语句我就不写了,网上有很多。

    那顺便把数据库创建和表的创建也放进来吧,省的以后自己找

    void MysqlSingleton::createDB()
    {
        QString querystring;
        //创建数据库
        dbconn = QSqlDatabase::database(DB_NAME);
        querystring = "CREATE DATABASE IF NOT EXISTS " + DB_NAME;
    
        dbconn.exec(querystring);
        if (dbconn.lastError().isValid())
        {
            cout<<"Create database failed."<<dbconn.lastError();
            return;
        }
    }

    /*
    "CREATE TABLE IF NOT EXISTS first"
                        "("
                        "id int auto_increment primary key ,"  //自增主键
                        "Name varchar(20),"
                        "age int"
                        ")"
    */
    
    void MysqlSingleton::createTable(QString sql)
    {
        //创建数据表student
        dbconn.setDatabaseName(DB_NAME);
        if(!dbconn.open())
        {
            cout<<"database open failed";
            return;
        }
        
        dbconn.exec(sql);//执行创建数据表语句
        if (dbconn.lastError().isValid())
        {
            cout<<"Student table creat failed:" << dbconn.lastError();
            return;
        }
    
        if (QSqlDatabase::database().driver()->hasFeature(QSqlDriver::Transactions))
        {
            //检查是否支持事务
            cout<<"DB shiwu OK";
    //        QSqlDatabase::database().transaction();
    //        QSqlQuery query;
    //        query.exec("SELECT id FROM T_STUDENT WHERE class=1");
    //        if (query.next())
    //        {
    //            query.exec("INSERT INTO T_STUDENT (id,name,age) VALUES (3,'小李',13)");
    //        }
    //        QSqlDatabase::database().commit();
        }
    
        //支持中文
        dbconn.exec("alter table first convert to character set utf8");
    }
  • 相关阅读:
    关于冲动 CQ
    关于在虚拟机上使用boost库 CQ
    新项目奖金分配方案 CQ
    关于桌子 CQ
    linux 添加本地yum源
    linux samba 服务器 简单配置
    linux 修改密码
    linux ntp 服务器和用户端
    linux 修改ip 地址
    Union 和 Union All 的区别
  • 原文地址:https://www.cnblogs.com/smh2015/p/11848306.html
Copyright © 2011-2022 走看看