Ios 从文档目录sqlite文件读取数据
我正在使用这行代码。但我无法从表中读取数据Ios 从文档目录sqlite文件读取数据,ios,objective-c,sqlite,Ios,Objective C,Sqlite,我正在使用这行代码。但我无法从表中读取数据 - (void)viewDidLoad { NSLog(@"value %@",[self filePath]); [self openDB]; [self getAllRowsFromTableNamed:@"Authentication"]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } -(NSStrin
- (void)viewDidLoad
{
NSLog(@"value %@",[self filePath]);
[self openDB];
[self getAllRowsFromTableNamed:@"Authentication"];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
-(NSString *) filePath
{
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentDirectory=[paths objectAtIndex:0];
return [documentDirectory stringByAppendingPathComponent:@"BM.sqlite"];
}
-(void)openDB
{
if(sqlite3_open([[self filePath]UTF8String], & db) == SQLITE_OK)
{
sqlite3_close(db);
NSAssert(0, @"Database failed to Open");
}
}
-(void)getAllRowsFromTableNamed:(NSString *)tableName
{
NSString *field1Str,*field2Str;
NSString *qsql=[NSString stringWithFormat:@"SELECT * FROM %@",tableName];
sqlite3_stmt *statement = nil;
if(sqlite3_prepare_v2(db, [qsql UTF8String], -1, &statement, NULL) == SQLITE_OK)
{
while(sqlite3_step(statement) == SQLITE_ROW)
{
char *field1=(char *) sqlite3_column_text(statement, 0);
char *field2=(char *) sqlite3_column_text(statement, 1);
field1Str=[[NSString alloc]initWithUTF8String:field1];
field2Str=[[NSString alloc] initWithUTF8String:field2];
NSString *str=[NSString stringWithFormat:@"%@ - %@",field1Str,field2Str];
NSLog(@"%@",str);
}
}
}
在
openDB
中,您正在检查数据库是否已打开,如果已打开,您将关闭数据库!!!以下行导致问题:
if(sqlite3_open([[self filePath]UTF8String], & db) == SQLITE_OK)
将该方法更改为:
-(void)openDB
{
if(sqlite3_open([[self filePath]UTF8String], & db) != SQLITE_OK)
{
NSAssert(0, @"Database failed to Open");
}
}
@复古-你不应该只是带着三方LIB突然出现。请注意这个问题-也许他不需要它。您是否得到任何错误,或者您是否向表中插入了一些数据,并尝试将断点放在if(sqlite3_prepare_v2(db,[qsql UTF8String],-1,&语句,NULL)==SQLITE_OK)处,然后检查控制是否进入if条件和while条件