問題描述:
在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();能成功插入數據啊,不知道我這個是爲啥。如果以後知道原因了,再來更博。