i had the same problem, i solved it looking at your comment about creating a new database.
The onCreate() method is called only when creating the database. If database is allready created (it creates the first time you try the code :), onCreate will not be called the next time you run the emulator.
so modifying the sql statement in onCreate() method wont change the table the next time you start the emulator, and you will still have the table that was created the first time you started your emulator and created the database. with this scenario you will have faulty sql statements in you code.
second scenario is that you used the adb-sqlite3 console (shell) program and modified the table(s). Database is already created, so onCreate() wont be called - and no matter what code you have to describe the table in you onCreate() the table will be the same as you modified it through shell...
my problem was that i deleted the tables using shell, and expected onCreate to re-create them, but the database was already created, and had no tables anymore.
So, the conclusion is that the first time you create the DATABASE all the tables are created, and if you need to modify them, modify them through shell or delete the database so the onCreate will be called nes time you run your program.
gosh, this text sounds like a infinite loop :)
sorry for complicating the answer, im realy realy tiered already... :(
good luck!