I’m a noob when it comes to sqlite and not quite sure how to do this.
I want a database with a bunch of row, containing one word each. When the user types a word, I will validate it by checking if its in the database.
Things I dont have, I guess, and don’t know how to create, is an index? How do I insert that? How do I write the query to take advantage of index?
I also have two columns in there, “id and word”. Is it good to have the id or does it just take up space?
This is what I got so far:
CREATE TABLE words (id INTEGER PRIMARY KEY, word VARCHAR(15));
I don’t want words longer then 15 characters, so I set the VARCHAR(15);
INSERT INTO words(word) VALUES('hello');
INSERT INTO words(word) VALUES('bye');
etc. for all words
And to check a word:
NSString *sql = [NSString stringWithFormat:@"SELECT EXISTS(SELECT 1 FROM words WHERE word=\"%@\" LIMIT 1)", word];
const char *sqlStatement = [sql UTF8String];
if (sqlite3_prepare_v2(db, sqlStatement, -1, &selectStmt, NULL) == SQLITE_OK)
{
int count = 0;
while(sqlite3_step(selectStmt) == SQLITE_ROW)
{
count = sqlite3_column_int(selectStmt, 0);
}
NSLog(@"COUNT: %i",count);
//If count is 1, we have a match.
}
Yes. Your Statement is ok.
You can also use
'intead of":It depends on your need, I will suggest you should keep an
Idfield as primary key.For creating index you can use:
For more about indexing check sqlite