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();能成功插入数据啊,不知道我这个是为啥。如果以后知道原因了,再来更博。

你可能感兴趣的:(MySQL,Qt)