the first problem c="C" is gone now. c='C' works fine. thanks! but the others still resist. i have only one process/no threads and i check the db-file before and after and check everything i try in c with sqlite3-client before. when i use exec() to select and use the void*udata (first argument to callback) to return the rowid (if there is a match) then it works. but prepare()/v2/v3 returns with error select x from t where .. ; -> result=17 schema changed. no column 'x' select * from t where .. ; -> result= 1 no tables specified i have dropped all 'x integer primary key' and use rowid directly select rowid from t where .. ; -> result=17 schema changed. no column 'r'