我正在学习一个教程。 它工作得很好..
我的怀疑是,执行单个查询,他们在这个方法中执行
"+ (void) getInitialDataToDisplay:(NSString *)dbPath {"
如
"select coffeeID, coffeeName from coffee""
没关系。但是对于我的下一个视图,如果我想执行一个新的查询,例如“select * from coffee where abc = 123”。
我应该在哪里写这个查询?我必须创建一个新方法,并且必须调用这个新方法或者什么? 我该如何执行另一个查询?
答案 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文件中。