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

sf6xfgos  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(324)

我使用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行,我没有问题;如果表不存在,我有问题。
我的代码怎么了?

fhg3lkii

fhg3lkii1#

假设 conPtr 是指向 TMySQLServer 对象,root的文档 TMySQLServer::Query() 说:
返回指向 TSQLResult 对象,否则为0。用户必须删除结果对象。
所以呢 Query() 失败时返回空指针。
另外,由于循环不会在每次迭代中重新打开新的db连接,因此不应该调用 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();

相关问题