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を開放しても良いかもだけど、とりあえず、こうやって回避。
いまいち。
ここを参考にした。