A: 

in db_insert_answer, you prepare your statement
if the prepare is SQLITE_OK, you bind your variables
however, regardless of preparation OK or not, you run the statement (which could be invalid)

you also do the same thing in db_update_EF

start there

KevinDTimm
A: 

char *update = "UPDATE Kanji SET EF = ? WHERE Kanji = '?'";

Replace it with

char *update = "UPDATE Kanji SET EF = ? WHERE Kanji = ?";

its already a string.u dont need a single quotes around that question mark

Bharathi