iPhone:如何删除SQLite数据库?

6
我知道如何通过iPhone开发创建sqlite数据库、向其中插入数据、删除行等操作,但我想尝试通过编程方式完全删除数据库本身,但没有得到任何帮助。请有经验的人指导我如何通过代码从设备中删除/移除整个sqlite数据库。
谢谢!
5个回答

16
如果您的数据库在“文档”中,可以尝试以下方法:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath =  [documentsDirectory stringByAppendingPathComponent:@"youdb.db"];

if([[NSFileManager defaultManager] fileExistsAtPath:filePath]){
    [[NSFileManager defaultManager] removeItemAtPath:filePath error:nil];
}

1
我收到了 BUG IN CLIENT OF libsqlite3.dylib: database integrity compromised by API violation: vnode unlinked while in use: 错误。 - Lal Krishna
我也遇到了同样的错误 BUG IN CLIENT OF libsqlite3.dylib: database integrity compromised by API violation: vnode unlinked while in use,你是怎么解决的? - Emma

1

尝试

NSError *err;

NSFileManager *fm = [NSFileManager defaultManager];

err = nil;

NSString *deleteFileName = [NSString stringWithFormat:@"%@/FileName",[[NSBundle mainBundle] resourcePath]];

NSURL *url = [NSURL fileURLWithPath:deleteFileName];

[fm removeItemAtPath:[url path] error:&err];

if(err)

{

NSLog(@"File Manager: %@ %d %@", [err domain], [err code], [[err userInfo] description]);

}

else

{

NSLog(@"File %@ deleted.",fileName);

}

1
如果您在Visual Studio中使用Xamarin,这将非常好。
string _FileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "databaseFileName.db3");    
File.Delete(_FileName);

0

如果数据库文件在您的文档目录中而不是捆绑包中,则可以使用NSFileManager删除该文件。确保没有任何进程打开该文件。


0

如果你想删除整个数据库,你需要在文件系统中找到它并在那里删除。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接