这个Sqlite3语句好吗?

时间:2013-01-16 08:03:15

标签: ios objective-c sql sqlite

对于sqlite我不是一个菜鸟,并且不太确定如何做到这一点。

我想要一个包含一堆行的数据库,每行包含一个单词。当用户键入单词时,我将通过检查它是否在数据库中来验证它。

我猜,我不知道如何制作的东西,是一个索引?我该如何插入?如何编写查询以利用索引?

我还有两列,“id和word”。拥有id还是只占用空间是好事吗?

这是我到目前为止所得到的:

CREATE TABLE words (id INTEGER PRIMARY KEY, word VARCHAR(15));

我不想要超过15个字符的单词,所以我设置了VARCHAR(15);

INSERT INTO words(word) VALUES('hello');
INSERT INTO words(word) VALUES('bye');
etc. for all words

并检查一个字:

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.  
}

1 个答案:

答案 0 :(得分:1)

是。你的陈述没问题。

您还可以使用'的{​​{1}}内容:

"

  

拥有id还是仅占用空间是否合适?

这取决于您的需要,我建议您将NSString *sql = [NSString stringWithFormat:@"SELECT EXISTS(SELECT 1 FROM words WHERE word='%@' LIMIT 1)", word]; 字段作为主键。


要创建索引,您可以使用:

Id

有关索引检查的更多信息sqlite