c ++ / sql连接器将Connection存储在对象中,并多次使用

时间:2019-01-24 10:36:25

标签: c++ mysql database-connection

我对sql数据库有多个查询。我创建了一个对象来存储我的连接信息

ConObj() {
    //create connection
    driver = get_driver_instance();
    con = driver->connect(server_adress,USER_ID,passphrase);
    con->setSchema(dbName);
    stmt = con->createStatement();
}

的第一次呼叫

res = -> executeQuery(SQLQUERY);

工作正常,并在

之类的函数中循环
for(std::string elem: queries){
    res = -> executeQuery(SQLQUERY);
    doSomething(res);
}

也可以正常工作。 但是,当我使用另一个有效的sql语句调用一个使新功能成为新函数的新函数时(如果我先调用它,该函数便会起作用),我得到以下异常:

ConObj obj;
obj.makeFirstRequests();
doSomething();
obj.makeSecondRequest();
  

在引发'sql :: SQLException'实例后调用终止
  what():命令不同步;您现在不能运行此命令

当我使用

在每个函数中建立连接时,代码也能正常工作
con = driver->connect(server_adress,USER_ID,passphrase);
    con->setSchema(dbName);
    stmt = con->createStatement();

但是由于性能原因和舒适度的原因,我想保持连接打开并进行新查询。 有什么办法可以做到,还是我必须在每个新函数中都对其进行初始化?而且我不理解为什么我必须在新函数中而不是在循环中这样做。 (也许两次通话之间有很多时间?)

感谢您的时间。

0 个答案:

没有答案