comment créer un fichier SQLite au démarrage de l'application (didFinishLaunchingWithOptions) le test si déjà ou non exsist autrement créer le fichier SQLitecomment créer un sqlite
Répondre
Comme ça ... la variable SQLPATH est le chemin d'accès la base de données SQL pré-faites sur votre ressource
- (void) checkAndCreateSQL
{
if (![[NSFileManager defaultManager] fileExistsAtPath:[documentPath stringByAppendingString:@"/database.sql"]]) {
[[NSFileManager defaultManager] createFileAtPath:[documentPath stringByAppendingString:@"/database.sql"]
contents:[NSData dataWithContentsOfFile:sqlPath]
attributes:nil];
}
}
EDIT 1:
Vous pouvez créer la base de données sur votre Mac en utilisant cette ligne de commande:
sqlite3 database.sql < DATABASE_CREATION.txt
dans quelque chose DATABASE_CREATION.txt comme ceci:
CREATE TABLE IF NOT EXISTS `group` (
`id` integer PRIMARY KEY,
`name` text,
`position` integer
);
mettre ensuite directement le fichier database.sql dans votre ressource de projet. (comme une image)
Vous voudrez probablement utiliser les bibliothèques de données de base par défaut au lieu de créer et de gérer manuellement un seul fichier sqlite. S'il vous plaît vérifier le Apple officiel Core Data Programming Guide. Il va gérer automatiquement la création et la mise à jour de la base de données interne dans l'application.
Je suis d'accord que les données de base devraient être dans la plupart des cas l'API utilisée, mais parfois vous avez besoin d'une base de données avec des clés primaires et uniques. sans tracas – TheSquad
Si les données de base ne pouvaient pas facilement gérer les clés uniques ou primaires ... il ne serait pas là. Il utilise simplement une approche entièrement indépendante du SQL, comme c'est le cas dans Hibernate, par exemple. – marzapower
sqlite3 *reference2Database() {
if (_database == nil) {
// First, test for existence.
NSError *error;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"my.sqlite"];
if ([fileManager fileExistsAtPath:writableDBPath] == NO) {
// Database file doesnt exists. Copy the database at writable path (documents directory).
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"my.sqlite"];
[fileManager removeItemAtPath:writableDBPath error:nil];
BOOL databaseCopied = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error];
if (!databaseCopied) {
// Handle the error...
}
}else {
// Open the database. The database was prepared outside the application.
if (sqlite3_open([writableDBPath UTF8String], &_database) != SQLITE_OK) {
// Even though the open failed, call close to properly clean up resources.
sqlite3_close(_database);
_database = nil;
// Additional error handling, as appropriate...
}
}
}
return _database;
}
// Utilisation de l'échantillon.
-(void) someDatabaseFunction {
sqlite3 *database = reference2Database();
// Do something with "database"...
}
// Ferme la base de données. Cela devrait être appelé lorsque l'application se termine.
void closeDatabase() {
if (_database == nil) return;
// Close the database.
if (sqlite3_close(_database) != SQLITE_OK) {
// Handle the error...
}
_database = nil;
}
NOTE: En haut du fichier, vous devez avoir: sqlite3 statique * _database = nul;
J'utilise Matteo Bertozzi's SQLite Wrapper
pour créer ma base de données SQLite avec le code suivant:
-(void)checkDatabase
{
if([[NSFileManager defaultManager] fileExistsAtPath:DBPATH] == NO)
{
sqlite = [[Sqlite alloc] init];
if (![sqlite open:DBPATH]) return;
[sqlite executeNonQuery:@"DROP TABLE yourtable"];
[sqlite executeNonQuery:@"CREATE TABLE yourtable (record1 TEXT NOT NULL,
record2 TEXT NOT NULL,
record3 TEXT NOT NULL,
record4 TEXT NOT NULL);"];
NSArray *results = [sqlite executeQuery:@"SELECT * FROM yourtable;"];
for (NSDictionary *dictionary in results) {
for (NSString *key in [dictionary keyEnumerator])
NSLog(@" - %@ %@", key, [dictionary objectForKey:key]);
}
[results release];
[sqlite release];
}
}
- 1. Comment créer un type ENUM dans SQLite?
- 2. OperationalError créer un index dans sqlite
- 3. Sqlite: créer un déclencheur par programme
- 4. Comment créer un index non-unique dans sqlite?
- 5. Comment créer un déclencheur de table avec DBD :: SQLite?
- 6. Comment créer des tables dans sqlite 3?
- 7. Comment créer SQLite DB jeter code android?
- 8. Comment créer des fonctions personnalisées dans SQLite
- 9. Comment optimiser un index SQLite?
- 10. tutoriel sqlite créer et afficher
- 11. créer un sqlite db sur un répertoire spécifié
- 12. Créer SQlite Db à l'exécution
- 13. lire unicode à partir de sqlite et créer un NSString
- 14. Créer sqlite db en utilisant bookshelf.js
- 15. Comment remplacer un DB SQLite
- 16. Est-il possible de créer un index temporaire en sqlite?
- 17. comment créer et accéder à sqlite-cursor dans l'objectif c?
- 18. Comment créer une vue de table figée dans SQLite?
- 19. Comment créer une base de données db3 avec SQLite-Net
- 20. Comment créer une application web asp.net en utilisant sqlite
- 21. Comment créer une extension liée statiquement pour sqlite?
- 22. Je dois créer une table SQLite
- 23. SQLite - créer une table s'il n'existe pas
- 24. Créer une instance SQLite 'non connectée'
- 25. Comment créer une base de données Sqlite cryptée?
- 26. Flex 4 Comment créer une base de données SQLite cryptée
- 27. Comment créer sqlite DB sans utiliser l'API WebSQL?
- 28. Comment puis-je créer une séquence dans SQLite?
- 29. Comment créer une base de données android sqlite dans android
- 30. Comment créer plus d'une table dans sqlite dans android?
Mais dans ce cas, vous supposez que le fichier à créer est déjà présent, puisque vous utilisez un appel à '[NSData dataWithContentsOfFile: ] '. Où 'sqlPath' devrait-il être? – marzapower
Vérifiez l'EDIT. – TheSquad
Le traitement des bases de données, à moins que des tâches très spécifiques ne le requièrent, devrait être réalisé en utilisant les bibliothèques Core Data, car pour les utiliser, vous n'êtes pas lié à une implémentation SQL spécifique et à des caractéristiques de base de données spécifiques. – marzapower