ios - ouvrir la base de données sqlite
Je suis en train de lire des données à partir d'une base de données sqlite et l'afficher dans un tableau en vue d'une application ios. Mais je ne suis pas en mesure d'ouvrir la base de données sqlite pour une raison quelconque, et l'application se bloque avec le message impossible d'ouvrir la base de données.
J'ai créé la base de données à l'aide de Firefox sqlite manager et copié le fichier dans le projet Xcode.
Voici mon code -
-(NSString *)dataFilePath{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
return [documentsDir stringByAppendingPathComponent:kFilename];
}
Je suis en train d'ouvrir la base de données à l'aide de la sqlite3_open_v2 de commande à l'intérieur de la viewDidLoad
sqlite3 *database;
if (sqlite3_open_v2([[self dataFilePath] UTF8String], &database, SQLITE_OPEN_READWRITE, NULL) != SQLITE_OK) {
sqlite3_close(database); // not sure you need to close if the open failed
NSAssert(0, @"Failed to open database");
}
OriginalL'auteur Ashish Agarwal | 2012-06-28
Vous devez vous connecter pour publier un commentaire.
C'est comment je peux ouvrir ma base de données. Je n'ai pas été faire de SQLite pour un bout de temps et je ne suis pas en mesure de vous donner beaucoup d'aide, autre que de fournir ce code que j'utilise dans mon application. C'est à partir d'une classe que j'utilise dans mon application.
OriginalL'auteur Andreas
Suis-je raison de supposer que votre question a été répondu lors de notre discussion dans les commentaires de ios - préparer sqlite déclaration? À savoir, nous voulons nous assurer que la base de données est inclus dans le bundle (par la confirmation de la commande "Copier le Bundle de Ressources" dans Xcode pour votre objectif est de Construire "Phases") et que vous voulez votre application pour vérifier l'existence de la base de données dans votre dossier de documents et si il n'est pas présent, vous allez copier à partir de votre bundle (
[[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:kFilename]
) dans votre dossier documents.Cela peut être au-delà de la portée de votre question initiale, mais comme on contemple un éventuel déploiement de votre application, et plus important encore, à la suite des mises à niveau/versions de votre application, vous pouvez ajouter une table de votre base de données avec quelques la base de données interne numéro de version que vous pouvez utiliser pour déterminer la version de la base de données l'utilisateur a dans leur dossier de documents, et de faire toutes les modifications à la base de données que vous pourriez avoir besoin de prendre en charge les dernières versions de votre application. Juste une pensée.
De toute façon, si vous avez encore des questions ouvertes, laissez-nous savoir. Sinon, je vais supposer que nous avons résolu votre question.
OriginalL'auteur Rob