我在Directory文件夹中有2个数据库文件,我希望用户选择要打开的文件

时间:2013-11-12 16:49:32

标签: ios database sqlite connect restore

我正在使用sqlite3和iOS。

我的资源文件夹中有一个数据库“2012”。我在我的应用程序的目录文件夹中备份了它(名为2013),因此在那里,数据库2012和2013具有相同的结构。

我制作了一个视图控制器,用户可以选择要打开2012或2013的数据库。

如何将“2013”​​NSString传递给连接方法?

-(void)connect
{
NSLog(@"%c",restore); // restore is a BOOL that becomes "YES" when i click the button for restore

if (restore  == YES)
{
    databaseName = [NSString stringWithFormat:@"%@.db",currentYear];
}
else
{
    databaseName = @"2012.db";
}
NSLog(@"Database name is: %@",databaseName);

// Get the path to the documents directory and append the databaseName
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,     NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
databasePath = [documentsDir stringByAppendingPathComponent:databaseName];

NSLog(@"Database path is: %@",databasePath);

[self checkAndCreateDatabase];

}

我正在尝试将年份值发送到连接:

NSString *year = restoreYear.text;
DatabaseDB *databaseDB = [[DatabaseDB alloc]init];
databaseDB.currentYear = year; //in DatabaseDB i have created property for current year and restore
databaseDB.restore = YES;

2 个答案:

答案 0 :(得分:0)

很抱歉,但上述问题不够清楚..

我的应用程序的Resources文件夹中有一个sqlite数据库,当我运行应用程序时,数据库被复制到Directory文件夹中,好吗?我有一个用户可以备份数据库的菜单,因此创建了第二个数据库。直到现在一切正常。

当用户单击还原第二个数据库的按钮时,问题出现在还原上。如何告诉数据库连接第二个数据库?好的,我可以通过connect方法传递名称。然后?应用程序如何知道下次打开应用程序时,第二个数据库将被打开?

谢谢。

答案 1 :(得分:0)

恢复功能表示您希望返回拍摄快照的时间点。如果这是您真正想要的,那么您需要做的就是将备份的数据库复制到“活动”数据库的名称。您可以选择重命名主动副本,以便撤消恢复。