我正在使用下面的代码在一个类中创建 db 并在 viewController 中使用它,并在 newViewController 的另一个类中再次使用相同的代码。
这是正确的吗 ?或者如果存在现有数据库,它是否会在其位置创建新数据库或使用?
还是我只需要使用路径?
当我在下面的示例中尝试extern NSString *path
时,我收到了中文信件并且无法打开它。
基本上在第二个控制器中,我只读取数据。
所以我试图通过路径访问数据库,打开路径和数据库的数据库。
如果我使用下面的代码创建它并且我想从另一个视图控制器第二次打开它,该怎么做。
请帮忙。
提前致谢。
在第一个控制器中:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsPath = [paths objectAtIndex:0];
NSString *path = [docsPath stringByAppendingPathComponent:@"test.db"];
FMDatabase *database;
database = [FMDatabase databaseWithPath:path];
[database open];
[database executeUpdate:@"DROP TABLE IF EXISTS **"];
[database executeUpdate:@"CREATE TABLE "];
//Select query for single row
FMResultSet *s = [database executeQuery:@"SELECT COUNT(*) FROM table"];
if ([s next]) {
int Count = [s intForColumnIndex:0];
}
//DO Something
[database close];
上面的代码在 viewcontroller 1 中运行良好。
我在视图控制器 2 中尝试过的东西。它仍然没有用。
extern NSString *path;
FMDatabase *database;
database = [FMDatabase databaseWithPath:path];
[database open];
我在这里得到一个错误,因为路径是看起来像中文的。
错误是EXC_BAD_ACCESS code
。
还通过以下方式尝试了全球数据库:
extern FMDatabase *database;
并将其用作
[database open];
我仍然得到同样的错误。
最后,它在第二个控制器中使用了以下代码。
我只是想看看这是否是正确的方法,或者我可以使用一些东西作为 db open 。
但我试过了,但它不起作用。另外我没有使用任何错误处理程序,因为我不知道如何在 FMDB 中执行此操作。
提前致谢。
请让我知道以下实现是否正确?:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsPath = [paths objectAtIndex:0];
NSString *newpath = [docsPath stringByAppendingPathComponent:@"test.db"];
FMDatabase *database2 ;
database2 = [FMDatabase databaseWithPath:newpath];
[database2 open];
//DO Something
[database2 close];