Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从文档目录sqlite文件读取数据_Ios_Objective C_Sqlite - Fatal编程技术网

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条件