這一定是一個愚蠢的問題,但我不能讓我的查詢工作。它就好像我的數據庫是空的(我重複檢查,不是)。它是一個簡單的SELECT * FROM table
查詢。這是我嘗試:xCode sqlite查詢
+(MyDatabase *)database{
if (database == nil) {
database = [[MyDatabase alloc] init];
}
return database;
}
- (id)init
{
self = [super init];
if (self) {
NSString *sqliteDb = [[NSBundle mainBundle] pathForResource:@"personsDB" ofType:@"sqlite3"];
if (sqlite3_open([sqliteDb UTF8String], &database) != SQLITE_OK) {
NSLog(@"Fail to open Database.");
}
}
return self;
}
和
-(NSArray *)getAllRows{
NSMutableArray *retArray = [[NSMutableArray alloc] init];
NSString *query = @"SELECT * FROM persons";
sqlite3_stmt *statement;
NSLog(@"checking SQLITE_OK?");
if (sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, nil) == SQLITE_OK) {
NSLog(@"SQLITE_OK");
while (sqlite3_step(statement) == SQLITE_ROW) {
int personID = sqlite3_column_int(statement, 0);
char *personChars = (char *) sqlite3_column_text(statement, 1);
int gender = sqlite3_column_int(statement, 2);
int related = sqlite3_column_int(statement, 3);
NSString *person = [[NSString alloc] initWithUTF8String:personChars];
MyDBInfo *info = [[MyDBInfo alloc] initWithpersonID:personID person:person gender:gender related:related ];
[retArray addObject:info];
}
sqlite3_finalize(statement);
}
return retArray;
}
我想這是所有有趣的東西。
在我的日誌中我得到checking SQLITE_OK?
,但沒有SQLITE_OK
。我沒有得到Fail to open Database.
,所以我認爲它的一切都很好。
我的數據庫已滿,有一張名爲persons
的表格。我很新sqlite
在iOS apps
。
謝謝。
名爲人士表? – bgoers
是的,位於'personsDB'中。 –
你確定數據庫包含在你的包中嗎?我有時會將文件添加到我的xcode項目中,而不會自動包含它們。選擇項目導航器頂部的目標,單擊目標,在主面板中選擇目標,選擇「Build Phases」,並查看您的數據庫是否包含在「Copy Bundle Resources」中。 – Rob