如何使用C ++检查mysql查询是否成功

时间:2018-06-21 20:41:11

标签: c++ mysql

我正在使用C ++解释器(ROOT,CERN框架)来循环访问多个mySQL表。每当我查询一个不存在的表时,程序都会对我退出:

for (int run = 19000; run < 22000; run ++) {
    s << run;
    num = s.str();
    schema = "run_0"+num+"_R007";
    s.str("");

    //creating our query
    query = "select distinct *whatever* from "+schema+".kTrack;";
    res = conPtr->Query(query);
    conPtr->Close();
    //Here is where I don't know what to do:
    if (*success*) {
        do stuff
    }
    else {
        do stuff
    }
}

如果表返回0行,我没有问题,如果表不存在,我有问题。

我的代码有什么问题?

1 个答案:

答案 0 :(得分:1)

假设conPtr是指向TMySQLServer对象的指针,则TMySQLServer::Query()的ROOT文档说:

  

如果成功,则返回指向TSQLResult对象的指针,否则返回0。。结果对象必须由用户删除。

因此Query()在失败时会返回NULL指针。

此外,由于循环不会在每次迭代中重新打开新的数据库连接,因此,在完成对它的查询之后,才应该调用conPtr->Close()

尝试更多类似的方法:

for (int run = 19000; run < 22000; run ++) {
    s << run;
    num = s.str();
    schema = "run_0"+num+"_R007";
    s.str("");

    //creating our query
    query = "select distinct *whatever* from "+schema+".kTrack;";
    res = conPtr->Query(query);
    if (res) {
        // use res as needed...
        delete res;
    }
    else {
        // ...
    }
}
conPtr->Close();