1

私はsqliteに関して初心者であり、これを行う方法がよくわかりません。

それぞれ 1 つの単語を含む一連の行を持つデータベースが必要です。ユーザーが単語を入力すると、データベースにあるかどうかを確認して検証します。

私が持っていない、そして作成方法がわからないものは、インデックスですか?それを挿入するにはどうすればよいですか?インデックスを利用するクエリを作成するにはどうすればよいですか?

そこには「idとword」という2つの列もあります。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.  
}
4

1 に答える 1

1

はい。あなたの声明は大丈夫です。

'の代わりに使用することもできます":

NSString *sql = [NSString stringWithFormat:@"SELECT EXISTS(SELECT 1 FROM words WHERE word='%@' LIMIT 1)", word];

ID を持つことは良いことですか、それともスペースを占有するだけですか?

Id必要に応じて異なりますが、フィールドを主キーとして保持することをお勧めします。


インデックスを作成するには、次を使用できます。

CREATE INDEX yourIndexName ON yourTableName ( yourColumnName )

インデックス作成の詳細については、sqliteを確認してください

于 2013-01-16T08:09:39.577 に答える