Qt向mysql數據庫插入數據,用exec成功,用prepare沒有報錯但數據庫裏沒有數據

問題描述:

在Qt裏連接好了MySQL數據庫,用exec(SQL語句)能成功插入數據(在MySQL workbench裏能查到),用prepare插入數據,在Qt裏沒有報錯,但在MySQL workbench裏看到其實並沒有數據插入進去。

一、用exec(SQL語句)能成功插入數據

bool a = query1.exec("insert into table_component_name values('temp_name1','temp_type1')");
if(a)
{
    qDebug()<<"插入成功!";
}
else
{
    qDebug()<<"插入失敗!";
}

二、用prepare插入數據,以下程序的兩處輸出都是成功,但在MySQL workbench裏看到其實並沒有數據插入進去。

 bool a = query1.prepare("insert into table_component_name(all_component_name,component_type)" "values(:all_component_name,:component_type);");
    if(a)
    {
        qDebug()<<"成功!";
    }
    else
    {
        qDebug()<<query1.lastError().text()<<"失敗!";
    }
    QString b = "aaaaaa";
    QString c = "bbbbbbb";
    query1.bindValue(":all_component_name",b);
    query1.bindValue(":component_type",c);
    bool d = query1.execBatch();
    if(d)
    {
        qDebug()<<"插入成功!";
    }
    else
    {
        qDebug()<<"插入失敗!"<<query1.lastError().text();
    }

解決辦法:把上面代碼中的query1.execBatch()改成query1.exec(),在MySQL workbench看,數據就成功插入了。

原因:我也不知道爲啥。

在網上看了別人的代碼,有的人用的query1.execBatch(); 有的人用的query1.exec(); 看B站教學視頻,明明別人用query1.execBatch();能成功插入數據啊,不知道我這個是爲啥。如果以後知道原因了,再來更博。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章