【发布时间】:2012-08-01 20:00:22
【问题描述】:
我无法从我的数据库中选择数据。也许它只是在这里很早,但看起来好像我从来没有得到任何返回,但我在 while 语句中设置了断点以停止,它永远不会到达代码的那部分。我在这件事上搞砸了吗?我确实省略了 create 语句,因为它相当长,而且我认为它不相关,因为它确实包含 IF NOT EXISTS。我还验证了我的所有数据都在数据库中。
sqlite3 *database;
if(sqlite3_open([[self dataFilePath] UTF8String], &database)
!= SQLITE_OK) {
sqlite3_close(database);
NSAssert(0,@"Failed to open database");
}
NSString *createSQL = @"--CREATE STATEMENT HERE --";
char *errorMsg;
if(sqlite3_exec (database, [createSQL UTF8String], NULL, NULL, &errorMsg) != SQLITE_OK) {
sqlite3_close(database);
NSAssert(0,@"Error creating table: %s", errorMsg);
}
NSString *query = @"SELECT name, number FROM DATA";
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, nil) == SQLITE_OK) {
while (sqlite3_step(statement) == SQLITE_ROW) {
int myNumber = sqlite3_column_int(statement, 1);
char *name = (char *)sqlite3_column_text(statement, 0);
NSString *message = [NSString stringWithFormat:@"Number: %d, Name: %@", myNumber,name];
//DO MORE STUFF HERE.
}
sqlite3_finalize(statement);
}
sqlite3_close(database);
dateFilePath 方法:
-(NSString*)dataFilePath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
return [documentsDirectory stringByAppendingPathComponent:@"Spaces.sqlite"];
}
【问题讨论】:
-
您是否在外部
sqlite manager中执行过查询并从那里得到结果?? -
是的,返回我需要的所有行。这就是我被卡住的原因,我不明白为什么它不运行代码,对我来说一切都很好。正如我在另一条评论中所说,我认为可能是我在 SQL 语句中犯了一个错误,所以我将获取列变得非常简单,但这仍然不起作用。
标签: objective-c ios sqlite