2010-01-06 9 views
0

J'ai une base de données db.sqlite3, je l'ai copiée-collée dans le dossier de documents et j'utilise le code pour y accéder dans le programme.Comment importer une base de données dans mon programme iphone?

[[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) 
    objectAtIndex:0] stringByAppendingPathComponent:kDbName] UTF8String]. 

Et je suis capable de l'utiliser pendant que mon application fonctionne en simulateur. Mais quand je teste dans l'appareil, cela ne fonctionne pas. Je sais que nous devrions l'importer dans les ressources et ensuite l'utiliser. Je l'ai ajouté dans les ressources, mais comment puis-je y accéder à l'intérieur du programme?

Répondre

1

essayez ceci:

NSString *dbPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"db.sqlite3"]; 
    if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) { 
// do something 
} 
+0

Oui, en gardant à l'esprit que vous n'aurez accès à rien dans votre base de données dans ce cas. – Vladimir

+0

merci beaucoup homme. Je sais que c'est simple mais ne sais pas pourquoi, cudnt le comprendre. – wolverine

1

Lors du premier lancement (ou dans le cas où le fichier de base de données n'est pas dans le dossier de documents) copier des ressources:

NSFileManager *fileManager = [[NSFileManager defaultManager] autorelease]; 

if ([fileManager fileExistsAtPath: databasePath]) { 
    return; 
} 

NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName]; 
[fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil]; 
+0

Cela a également travaillé pour moi. Mais comme je n'avais rien à écrire sur DB, j'ai utilisé le précédent. En tout cas, merci beaucoup. – wolverine

1

Votre application a besoin de créer une version de lecture-écriture de la base de données dans le dossier Documents en copiant à partir des ressources. Voir n'importe quel turorial de sqlite-iphone pour savoir comment faire ceci. this one

En regardant vos questions récentes, il me semble que vous gagneraient à travailler à travers un tutoriel pour vous mettre sur la bonne voie.

Questions connexes