2013-01-16 81 views
1

我是一個noob,當涉及到SQLite和不太確定如何做到這一點。這是Sqlite3聲明行嗎?

我想要一堆數據庫,每行包含一個字。當用戶輸入一個單詞時,我將通過檢查它是否在數據庫中來驗證它。

我沒有的東西,我猜,不知道如何創建,是一個索引?我如何插入?如何編寫查詢以利用索引?

我也有兩列,「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

這裏:'的NSLog(@ 「數:%d」,算);使用''% d'代替'%i','%d'代表一個整數值。 – Houssni

+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

+0

太好了。謝謝 – BlackMouse

+0

@ user1251004:高興:)感謝您的評論:) –