2010-10-07 6 views
3

J'essaie d'ouvrir une base de données que j'ai dans mon projet à l'intérieur des ressources.FMDB open database

Le problème est qu'il semble qu'il est impossible de trouver le fichier de base de données! J'ai essayé avec le chemin complet, et cela fonctionne, mais ce n'est pas une bonne solution.

Je voudrais maintenant savoir comment l'ouvrir!

J'utilise ce code: db = [FMDatabase databaseWithPath: @ "bbdd.sql"];

Je ne sais pas comment trouver l'autre partie du chemin "réel".

Avez-vous une solution pour moi?

Merci!

Répondre

8

Vous devez trouver le chemin complet de la base de données dans le votre paquet de ressources, quelque chose comme ceci:

NSString *databasePath = [[NSBundle mainBundle] pathForResource:@"mySQLiteDatabaseFile" ofType:@"sqlite3"]; 

Il y a un exemple complet dans ce fil Copying data to the Application Data folder on the iPhone

+0

Mais j'ai toujours un problème, il ouvre cette adresse longue le chemin qu'il ouvre est: /Users/nameOfUser/Bibliothèque/Application Support/iPhone Simulator/3.2/Applications/5399D73E-F31A-46B1-94B1-EAD3E2B96D6E/appName.app /bbdd.sql Et le chemin dont j'ai besoin est: /Users/nameOfUser/Folder1/Folder2/appName/bbdd.sql Je dois savoir comment obtenir le chemin du dossier où le projet doit ouvrir la base de données . – victorvj

+1

Le "chemin d'adresse longue" est parce que vous courez dans le simulateur. Et il semble que le chemin est correct pour un fichier sql fourni par bundle. Si vous voulez l'éditer, vous devez maintenant le copier dans le répertoire des documents d'applications (voir le lien dans mon commentaire original) –

4

Obtenir le répertoire des documents:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentDirectory = [paths objectAtIndex:0]; 
NSString *dbPath = [documentDirectory stringByAppendingPathComponent:@"Test.db"]; 

Suivant

DB = [FMDatabase databaseWithPath:dbPath]; 
+0

J'ai aussi eu le problème avec le chemin de la base de données, ne pointant pas vers le répertoire du document. Bonne idée. – Redwarp