2010-11-30 4 views
1

Je dois ajouter un existant DB dans mon application iphone J'ai essayé de le mettre dans le dossier du projet et utilisé cette fonction initComment ajouter la base de données existante dans mon application dans iphone sdk

-(id) initDatabase{ 
    databaseName = @"mydatabase.sqlite"; 
    // 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]; 
[databasePath retain]; 

    return self; 
} 

et alors j'utilisé cette fonction

if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK){ //inserting methods 

mais j'ai une erreur: la table « NameTable » n'existe pas, je suis sûr que ce tableau existe et je pense que ces méthodes créent un nouveau fichier db dans le chemin de l'unité.

+0

J'ai essayé pathForResource: ofType: mais il Retun nul, pas path..do vous savez pourquoi? edit: Je sais pourquoi c'est nul: JE DOIS APPELER INITDATABASE FONCTION! comment je pourrais appeler la fonction initDatabse? – Daniele

Répondre

0

Vous ne pouvez pas avoir de fichiers dans le dossier de documents pour démarrer. Tout ce qui vient avec l'application doit être inclus dans l'ensemble de l'application. La première fois que l'application s'exécute, le dossier de documents est toujours vide.

Vous devez rechercher le fichier dans l'ensemble de l'application à l'aide de pathForResource:ofType: de NSBundle.

Si le DB est en lecture seule, vous pouvez le laisser là. Si c'est readwrite, vous devez copier le fichier dans le dossier des documents ou de la bibliothèque la première fois que l'application est lancée.


Mise à jour:

could you make an example about using 'NSBundle's pathForResource:ofType:' please?I'm sorry but I'm new to iphone sdk

Il est juste:

NSString *path=[[NSBundle mainBundle] pathForResource:@"myDatabase" ofType:@"sqlite"]; 
+0

pourriez-vous faire un exemple sur l'utilisation de 'pathForResource de NSBundle: ofType:' s'il vous plaît? Je suis désolé mais je suis nouveau sur iphone sdk. – Daniele

0

Dans la barre latérale, cochez la case "Cibles" => (Votre cible) => "Copier les ensembles de ressources". Je pense que votre fichier de base de données n'a peut-être pas été copié car Xcode n'a aucune idée du type de fichier.

+0

merci pour votre réponse. J'ai coché "copy bundle resources" et là j'ai mydatabase.sqlite..J'ai aussi ouvert avec sqlite manager et j'ai ma table, j'ai aussi vérifié le chemin créé ("databasepath"): moi/library/applicationsupport/iphone simulator/ecc ecc/documents/et il y a mydatabase.sqlite MAIS EST VIDE !!! peut-être cela est créé par les méthodes mais je veux utiliser mon db pas un nouveau DB! comment pourrais-je résoudre ce problème? – Daniele

Questions connexes