2010-10-14 125 views
0

大家好,執行多個查詢

我是folloeing本教程 Sample code 它是偉大的工作..

我doubht是,執行他們在這個方法中執行一個查詢

"+ (void) getInitialDataToDisplay:(NSString *)dbPath {" 

as "select coffeeID, coffeeName from coffee""

那很好。但對於我的下一個視圖,如果我想執行一個新的查詢,如「select * from coffee where abc = 123」。

我應該在哪裏寫這個查詢?我想創建一個新的方法,並呼籲這個新的方法或什麼? 我該如何執行另一個查詢? PLZ建議。

回答

1

1)如果你打算使用SQLite。我建議你學習如何將Core Data添加到你的應用程序中。

2)要回答你的問題。你可以添加一個方法到咖啡類來檢索你需要的數據。這可能是實現一個類的方法就像:

+ (void) getData:(NSString *)dbPath { 
    SQLAppDelegate *appDelegate = (SQLAppDelegate *)[[UIApplication sharedApplication] delegate]; 

    if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) { 

    // <---Modify the sqlite statement below 
    const char *sql = "select coffeeID, coffeeName from coffee"; 
    sqlite3_stmt *selectstmt; 
    if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK) { 

    while(sqlite3_step(selectstmt) == SQLITE_ROW) { 

    NSInteger primaryKey = sqlite3_column_int(selectstmt, 0); 
    Coffee *coffeeObj = [[Coffee alloc] initWithPrimaryKey:primaryKey]; 
    coffeeObj.coffeeName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 1)]; // <-- create objects in coffeeObj that you want to do something with. 

    coffeeObj.isDirty = NO; 

    [appDelegate.coffeeArray addObject:coffeeObj]; 
    [coffeeObj release]; 
    } 
    } 
    } 
    else 
    sqlite3_close(database); //Even though the open call failed, close the database connection to release all the memory. 
    } 

請務必添加相應的方法來.h文件也是如此。

+0

感謝喬丹,只有一件事我需要ask..i通過它查詢,但如何和wheer我應該稱之爲「+(無效)的getData:(的NSString *)DBPATH」方法???? – iscavengers 2010-10-14 06:52:54

+0

ohk運行了,我在applicationdidfinish啓動時調用了這個方法。但有一點,我以這種格式獲取返回數據爲「」。當我關閉應用程序並再次運行它時,它會顯示真實的數據,你知道爲什麼會發生這種情況嗎?謝謝一噸先生 – iscavengers 2010-10-14 06:57:40

+0

咖啡是一個類。更確切地說,它是一個數據模型對象。這是一個保存你的數據的結構。您使用點符號引用NSStrings等。例如,在上面的代碼中,咖啡的名稱存儲在coffeeObj.coffeeName中。 – Jordan 2010-10-14 07:02:38