Your problem is that you use single quotes around column names. Single quotes are for enclosing string litterals. Albeit SQLite does a smart job at silently correctly internally your create table statement, it can't do the same in the where clause, so that where clause simply compares both strings, which obviously fails. Change your statements so that column names are enclosed in square brackets [column 1] or double quotes "column 2" or even grave accents `column 3`. You wouldn't need that if your column names didn't have white space or conflict with reserved keywords. Use the same delimiters for any schema name (table, index, column, database alias, view, constraint, foreign key, ...) EDIT: forgot to mention that enclosing schema names with grave accent is AFAIK an undocumented feature to ease porting to MySQL. Unlike square brackets and double quotes, grave accents seem to have issues in some constructs, so the best bet is to stick to [my column name is beautiful] or "আমার কলামের নাম সুন্দর" (this is the bengali translation of the same name: schema columns are Unicode aware and caseless for lower ASCII only)