thanks ,Your suggestion solved my problem. in myself idea,sqlite3_exec("update statement") return the modified row count may be better, because it's no need invoke sqlite3_changes() to get affected row count. why the author don't implement sqlite3_exec return affected row count?