Hi, using Connector / C ++ and executing a simple 2 sql command, such as: the first select sql starts normally, and the second causes this exception error:
ERR: commands are not synchronized; you cannot run this comman d now (MySQL error code: 2014, SQLState: HY000)
here is the code:
//member of the class ResultSet *temp_res; // in different method m_driver = get_driver_instance(); m_con = m_driver->connect(m_DBhost,m_User,m_Password); m_con->setSchema(m_Database); //here i excute the querys : vector<string> query; query.push_back("SELECT * FROM info_tbl"); query.push_back("INSERT INTO info_tbl (id,name,age)VALUES (0,foo,36)"); query.push_back("SELECT * FROM info_tbl"); ResultSet *res; Statement *stmt; bool stmtVal = false; try{ stmt = m_con->createStatement(); for(size_t i = 0;i < querys.size();i++) { string query = querys.at(i); stmtVal = stmt->execute(query); if(!stmtVal) { string error_log ="sql statment:"; error_log.append(query); error_log.append(" failed!"); cout << error_log << endl; break; } } if(stmtVal) { if(returnSet) { res = stmt->getResultSet(); temp_res = res; } } delete stmt; //close connection to db m_con->close(); } catch (sql::SQLException &e) { ...... }
UPDATE NEW CODE AS OFFERED (DOES NOT WORK)
for(size_t i = 0;i < querys.size();i++) { string query = querys.at(i); stmtVal = stmt->execute(query); if(stmtVal) { if(returnSet) { if(stmt->getResultSet()->rowsCount() > 0) { res = stmt->getResultSet(); temp_res = res; } else { delete res; } } else { delete res; } } if(!stmtVal) { string error_log ="sql statment:"; error_log.append(query); error_log.append(" failed!"); cout << error_log << endl; break; } }
this is my simple table:
Column Type Null id int(10) No name varchar(255) No age int(10) No
source share