这一定是一个愚蠢的问题,但我无法让我的查询工作。好像我的数据库是空的(我仔细检查过,不是)。它是一个简单的SELECT * FROM table
查询。这就是我尝试的方式:
+(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
in很陌生iOS apps
。
谢谢你。