SQLiteの罠
罠ってほどじゃないけど
vsqlite++で
SELECTで、query作ったとき、resultを最後まで読まずに、トランザクション作って、閉じようとすると
SQL logic error or missing database とかいう文句を言われる。
例:
sqlite::execute(*con, "BEGIN TRANSACTION", true); sqlite::query q(*con, "SELECT * from " + table_name + " WHERE Flag = '0';"); boost::shared_ptr<sqlite::result> res = q.emit_result(); std::string workID = "123"; // この行がないと、SQL logic error ...... とか文句言われる。 while(res->next_row()); sqlite::execute(*con, "UPDATE " + table_name + " SET Flag = '1' WHERE ID = '" + workID + "';", true); sqlite::execute(*con, "COMMIT TRANSACTION", true);
resを開放しても良いかもだけど、とりあえず、こうやって回避。
いまいち。
ここを参考にした。