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");
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM