执行多个查询

时间:2010-10-14 05:58:06

标签: ios

我正在学习一个教程。 它工作得很好..

我的怀疑是,执行单个查询,他们在这个方法中执行

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

如  "select coffeeID, coffeeName from coffee""

没关系。但是对于我的下一个视图,如果我想执行一个新的查询,例如“select * from coffee where abc = 123”。

我应该在哪里写这个查询?我必须创建一个新方法,并且必须调用这个新方法或者什么? 我该如何执行另一个查询?

1 个答案:

答案 0 :(得分: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文件中。