Я использую библиотеку MySQL Connector/C++ для вставки значений в таблицу базы данных. Я следую примерам на
http://dev.mysql.com/tech-resources/articles/mysql-connector-cpp.html
почти точно. Однако я не могу заставить подготовленные операторы работать с заполнителями значений.
sql::mysql::MySQL_Driver* driver = sql::mysql::MySQL_Driver::Instance();
boost::shared_ptr<sql::Connection> conn(driver->connect("localhost", "", ""));
conn->setSchema("TESTDB");
boost::shared_ptr<sql::Statement> stmt(conn->createStatement());
stmt->execute("DROP TABLE IF EXISTS TESTTBL");
stmt->execute("CREATE TABLE TESTTBL (m_id INT)");
boost::shared_ptr<sql::PreparedStatement> pstmt(conn->prepareStatement("INSERT INTO TESTTBL VALUES(?)"));
for (int i = 0; i != 10; ++i) {
pstmt->setInt(1, i);
pstmt->executeUpdate(); // Always inserts 0.
}
Любые идеи о том, почему я не могу привязаться к подготовленному заявлению? Другие функции set* имеют тот же результат (например, если я использую setString, я получаю строку '0' в результирующей строке).