Comment insérer des données dans une base de données SQLite dans l'iPhone
Je suis nouveau sur le développement iPhone. Je veux insérer certaines données dans ma base de données et de les récupérer
et l'afficher dans un tableau. J'ai créé Database data.sqlite
avec table 'utilisateur'. La table dispose de deux valeurs, id(varchar) et nom(varchar). J'ai inséré 3 lignes de données dans la table via "insert into user('1','xxxx');" dans la fenêtre du terminal. J'ai créé une navigation en fonction de l'application nommée "testDb". Dans AppDelegate j'ai deux méthodes
- (void)createEditableCopyOfDatabaseIfNeeded {
NSLog(@"Creating editable copy of database");
//First, test for existence.
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"data.sqlite"];
success = [fileManager fileExistsAtPath:writableDBPath];
if (success) return;
//The writable database does not exist, so copy the default to the appropriate location.
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"data.sqlite"];
success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error];
if (!success) {
NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
}
}
et
+(sqlite3 *) getNewDBConnection{
sqlite3 *newDBconnection;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"data.sqlite"];
//Open the database. The database was prepared outside the application.
if (sqlite3_open([path UTF8String], &newDBconnection) == SQLITE_OK) {
NSLog(@"Database Successfully Opened :)");
}
else {
NSLog(@"Error in opening database :(");
}
return newDBconnection;
}
Dans rootviewcontroller
-(void)initializeTableData{
sqlite3 *db=[DatabaseTestAppDelegate getNewDBConnection];
sqlite3_stmt *statement=nil;
const char *sql="select * from user";
if (sqlite3_prepare_v2(db, sql, -1, &statement, NULL)!=SQLITE_OK)
NSAssert1(0,@"error in preparing staement",sqlite3_errmsg(db));
else {
while(sqlite3_step(statement)==SQLITE_ROW)
[tableData addObject:[NSString stringWithFormat:@"%s",(char*)sqlite3_column_text(statement,1)]];
}
sqlite3_finalize(statement);
}
- (void)viewDidLoad {
[super viewDidLoad];
tableData=[[NSMutableArray alloc]init];
[self addMyObjectIntoDatabase];
[self initializeTableData];
self.title=@"Database test";
}
Pour afficher le contenu
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
NSLog(@"before displaying data");
cell.textLabel.text=[tableData objectAtIndex:indexPath.row];
NSLog(@"after displaying data");
//Configure the cell.
return cell;
}
Cela fonctionne bien pour afficher le contenu du tableau. Mais maintenant, je veux insérer une ligne dans ma table et afficher le contenu inséré avec un contenu précédent. Depuis, je suis nouveau sur iPhone, j'ai appris à partir des tutoriels pour lire la base de données et afficher son contenu. Comment puis-je aller plus loin dans ma tâche de l'insertion et de l'afficher à nouveau?
Ici est agréable tutoriel disponible. cliquez ICI pour le lien.
OriginalL'auteur Warrior | 2010-02-02
Vous devez vous connecter pour publier un commentaire.
Si vous êtes vraiment intéressé à apprendre comment utiliser SQLite pour gérer les données dans une application iPhone, je vous recommande de vous pour compléter le tutoriel ci-dessous, que c'est une très bonne introduction:
iphone-programmation-tutoriel-créer-un-todo-list-aide-sqlite-partie-1
Le tutoriel poignées de Sélection, de mise à Jour, Insertion et Suppression de données dans une application iPhone, en utilisant SQLite.
OriginalL'auteur Wolfgang Schreurs
En gros, vous avez deux options recommandées (et à l'aide de la classe C n'est pas l'un d'eux).
FMDB est utilisé par beaucoup de développeurs comme un wrapper pour Sqlite. http://code.google.com/p/flycode/source/browse/trunk/fmdb FMDB est léger et très facile à utiliser.
Voici un exemple d'appel:
Cela suppose suis ApplicationSettings exemple à l'intérieur de votre AppDelegate .m fichier.
Inserts sont trop facile:
L'autre option est d'utiliser la Base de Données (disponible sous forme de kit de développement SDK 3.0). De base de Données est destinée à être assez rapide et optimisé, bien qu'il ne vous limite de non-norme des choses. Même si elle peut conduire à un ralentissement des requêtes SQL, sauf si vous donnez la considération due à la façon dont vous l'utiliser.
Il y a un tutoriel sur l'iPhone Dev Center ici
OriginalL'auteur pchap10k
Insérer un utilisateur avec certaines valeurs, vous devez créer une instruction SQL insert comme. Disons que l'objet Utilisateur possède un nom et de prénom alors qu'il pourrait ressembler:
Vous pouvez consulter un exemple complet à:
http://www.apptite.be/tutorial_ios_sqlite.php
OriginalL'auteur Luc Wollants
veuillez vérifier:
et
OriginalL'auteur Lalit