我正在使用MySQL連接器/ C++庫將值插入到數據庫表中。我在MySQL/C++和準備好的語句:setInt始終爲0
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')。
當你說它「總是插入0」,你的意思是你在數據庫中得到10行零? – 2009-11-10 20:13:08
是的,無論我傳給setInt(),我得到10行零。如果我硬編碼一個數字而不是'?'一切皆好。 – Ryan 2009-11-10 22:00:28