如何在iPhone应用程序中找到SQLite数据库的大小?

时间:2009-11-23 11:07:20

标签: iphone sqlite

在我的iphone应用程序中,我使用了sqlite3来存储数据。 如何使用iphone功能获取数据库的大小?

如果有人有任何代码或任何有用的链接或任何其他决议,将不胜感激。

谢谢,

Mishal Shah

3 个答案:

答案 0 :(得分:1)

尝试以下操作,这可以帮助您

- (NSString *)applicationDocumentsDirectory {
    return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
}

- (void) logSqlliteStoreSize
{
    NSString *yourSqlLiteFileName = @"YOURDATABASE_NAME.sqlite";
    NSString *yourSqlLitePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent: yourSqlLiteFileName];
    NSError *error;
    NSDictionary *storeAttributesOfItemAtPath = [[NSFileManager defaultManager] attributesOfItemAtPath:yourSqlLitePath error:&error];
    // here you should test for errors, this is a simplified version

    // the next log will show much information about your sqlite file
    // including the filesize
    NSLog(@"storeAttributesOfItemAtPath=%@", storeAttributesOfItemAtPath);

}

答案 1 :(得分:1)

您可以使用以下代码(从my answerthis question)来确定数据库的大小和文件系统上的可用空间:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *persistentStorePath = [documentsDirectory stringByAppendingPathComponent:@"database.sqlite"];

NSError *error = nil;
NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:persistentStorePath error:&error];
NSLog(@"Persistent store size: %@ bytes", [fileAttributes objectForKey:NSFileSize]);

NSDictionary *fileSystemAttributes = [[NSFileManager defaultManager] attributesOfFileSystemForPath:persistentStorePath error:&error];
NSLog(@"Free space on file system: %@ bytes", [fileSystemAttributes objectForKey:NSFileSystemFreeSize]);

这假设您的数据库名为“database.sqlite”,并存储在应用程序文档目录的根目录中。

答案 2 :(得分:0)

您可以在

中找到iPhone模拟器中应用程序的database文件
~/Library/Application Support/iPhone Simulator/User/Applications/*a long number*/Documents/

如果你有一个越狱手机,你可以SSH进入它,找到它也在/Applications/*<a long number>*/Documents/文件夹中的应用程序文件夹。