2010-11-29 16 views

Antwort

3

Zuerst müssen Sie die db mit diesen 2 Methoden zur Initialisierung

-(id) initDatabase{ 
    databaseName = @"db.sqlite"; 
    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDir = [documentPaths objectAtIndex:0]; 
    databasePath = [documentsDir stringByAppendingPathComponent:databaseName]; 
    [databasePath retain]; 

    return self; 
} 

-(void) checkAndCreateDatabase{ 
    BOOL success; 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    success = [fileManager fileExistsAtPath:databasePath]; 
    if(success) return; 
    NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName]; 
    [fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil]; 
    [fileManager release]; 
} 

Dann können Sie mit ihr zu interagieren:

if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { 
    static sqlite3_stmt *compiledStatement; 
    sqlite3_exec(database, [[NSString stringWithFormat:@"insert into myTable (var1, var2) values ('%@', '%@')", myVar1, myVar2] UTF8String], NULL, NULL, NULL); 
    sqlite3_finalize(compiledStatement); 
} 
sqlite3_close(database); 
+0

THANK SIE FÜR DIE TEMPESTIVE ANTWORT !! aber wenn ich fisrt und zweite Methoden implementiere, sehe ich 2 Fehler: "databaseName undeclared" und "databasepath undeclared" –

+0

NSString * databaseName; NSString * databasePath; sqlite3 * Datenbank; char * sqlStatement; sqlite3_stmt * compiledStatement; ... und es sollte funktionieren! – vincent

+0

Entschuldigung, aber ich bin ein echter Neuling ... wo muss ich diese Variablen deklarieren? –

0

es einfach zu speichern Daten in DB

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES); 
    NSString *documentsDir = [paths objectAtIndex:0]; 

    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSError *error; 
    NSString *dbPath =[documentsDir stringByAppendingPathComponent:@"register.sqlite"]; 
    BOOL success = [fileManager fileExistsAtPath:dbPath]; 
    sqlite3_stmt *selectstmt; 
    if(!success) 
    { 
     NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"register.sqlite"]; 
     success = [fileManager copyItemAtPath:defaultDBPath toPath:dbPath error:&error]; 

     if (!success) 
      NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]); 
    } 

    if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) { 
     //*************** insert value in database******************************\\ 

     const char *sql = "insert into reg_FORM (firstname,lastname,email,company,phone) VALUES ('nannav','cs','[email protected]','ibm',123456789)"; 
     sqlite3_prepare_v2(database,sql, -1, &selectstmt, NULL); 
     if(sqlite3_step(selectstmt)==SQLITE_DONE) 
     { 
      NSLog(@"insert successfully"); 
     } 
     else 
     { 
      NSLog(@"insert not successfully"); 

     } 
    sqlite3_finalize(selectstmt); 
     sqlite3_close(database); 
    } 
} 
Verwandte Themen