8
votes

Créer un SQLite DB Programmatiquement dans iPhone SDK

Hai I A'M essayant de créer une base de données SQLite programmatiquement au moment de l'exécution. Quelqu'un peut-il dire comment le créer dans iPhone SDK.


0 commentaires

3 Réponses :


20
votes

Appelez simplement la fonction SQLITE3_OPEN Il créera une base de données si aucune base de données n'existe sur le chemin. XXX

Postez un commentaire Si vous avez besoin d'un autre exemple de code sur ce


1 commentaires

Tous les tutoriels sur ce sujet, Saurabh. S'il vous plaît pouvez-vous nous donner merci vous



3
votes
-(void)viewDidLoad
{
    [super viewDidLoad];
    NSString *docsDir;
    NSArray *dirPaths;
    // Get the documents directory
    dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    docsDir = [dirPaths objectAtIndex:0];

    // Build the path to the database file
    databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent: @"contacts.sqlite"]];
    NSFileManager *filemgr = [NSFileManager defaultManager];

    if ([filemgr fileExistsAtPath: databasePath ] == NO)
    {
        const char *dbpath = [databasePath UTF8String];

        if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
        {
            char *errMsg;
    const char *sql_stmt = "CREATE TABLE IF NOT EXISTS CONTACTS (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, ADDRESS TEXT, PHONE TEXT)";

            if (sqlite3_exec(contactDB, sql_stmt, NULL, NULL, &errMsg) != SQLITE_OK)
            {
                NSLog(@"if");

            }

            sqlite3_close(contactDB);

        } else 
        {
            NSLog(@"else");

        }
    }
    [filemgr release];

}

-(IBAction)table
{
    NSString *docsDir;
    NSArray *dirPaths;

    // Get the documents directory
    dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    docsDir = [dirPaths objectAtIndex:0];

    // Build the path to the database file
    databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent: @"contacts.sqlite"]];

    NSFileManager *filemgr = [NSFileManager defaultManager];

   // if ([filemgr fileExistsAtPath: databasePath ] == NO)
    {
        const char *dbpath = [databasePath UTF8String];

        if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
        {
            char *errMsg;
            const char *sql_stmt = "CREATE TABLE LIST (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, ADDRESS TEXT, PHONE TEXT)";

            if (sqlite3_exec(contactDB, sql_stmt, NULL, NULL, &errMsg) != SQLITE_OK)
            {

                  NSLog(@"tables failed");
               // status.text = @"Failed to create table";
            }

            sqlite3_close(contactDB);

        }
        else 
        {

            NSLog(@"tables failed");
            //status.text = @"Failed to open/create database";

        }
    }

    [filemgr release];
}  

1 commentaires

Importer dans le fichier .m #import et ajouter un cadre dans votre projet libsqlite3.0.dylib .... merci :)



2
votes

Importation de fichier .m #import sqlite3.h et ajoutez un cadre dans votre projet libsqlite3.0.dylib

d'abord créer une classe NsObject et la base de données informatique nommée. Dans la classe p> xxx pré>

// --- Méthodes initiales ------- p> xxx pré>

// ------------------ Méthode de recherche du chemin --------------------- // P>

    -(void)updateSetting:(NSArray *)arr
    {    
if(sqlite3_open([databasePath UTF8String],&myDatabase)==SQLITE_OK)
{
    NSLog(@"opened");
    sqlite3_stmt *compiledStmt;

   // NSLog(@"%@",arr);

    NSString *sqlStmt=[NSString stringWithFormat:@"UPDATE setting SET ragular=%i,cycle=%i, flow='%@', hour=%i,minute=%i,formate='%@' ,tenminute=%i ,thirtyminute=%i,sixtymin=%i, twentymin=%i, fourtyfivemin=%i ,other='%@',formatemessage ='%@' WHERE primaryKey=%i;",[[arr objectAtIndex:0]intValue],[[arr objectAtIndex:1]intValue],[arr objectAtIndex:2],[[arr objectAtIndex:3]intValue],[[arr objectAtIndex:4]intValue],[arr objectAtIndex:5],[[arr objectAtIndex:6]intValue],[[arr objectAtIndex:7]intValue],[[arr objectAtIndex:8]intValue],[[arr objectAtIndex:9]intValue],[[arr objectAtIndex:10]intValue],[arr objectAtIndex:11],[arr objectAtIndex:12],1];
 //   NSLog(@"%@",sqlStmt);
     if(sqlite3_prepare_v2(myDatabase, [sqlStmt UTF8String],-1,&compiledStmt, NULL)==SQLITE_OK) 
      {
    NSLog(@"updateding......cycle");
        }
    sqlite3_step(compiledStmt);
    sqlite3_close(myDatabase);
}

  }


0 commentaires