2011-09-30 4 views
0

Tout d'abord, je suis assez nouveau pour le développement de l'iPhone, et tout nouveau à l'intégration de sqlite3 dans mon application. Je l'ai utilisé dans mes applications Android et Blackberry, donc je connais les commandes de base et autres. Voici mon problème: J'ai créé un DB et une table par programme (les deux ont été créés correctement). Voici le code que j'ai utilisé pour créer la table:iphone sqlite insérer ... EXC_BAD_ACCESS

const char *sql_stmt = "CREATE TABLE IF NOT EXISTS EXPENSES (id integer primary key autoincrement, unix_date integer, date_time text, purpose text, start_mile text, end_mile text, distance text, fees text, party_id integer)"; 

La table a été créée correctement.

Cette fonction je pour enregistrer les données:

- (void) saveData 
{ 
sqlite3_stmt *statement; 
const char *dbpath = [databasePath UTF8String]; 
NSString *timestamp = [NSString stringWithFormat:@"%d", (long)[[NSDate date] timeIntervalSince1970]]; 

if (sqlite3_open(dbpath, &expenseDB) == SQLITE_OK) 
{ 
    NSString *insertSQL = [NSString stringWithFormat:@"INSERT INTO EXPENSES (timestamp, date_time, purpose, start_mile, end_mile, distance, fees, party_id) VALUES (\"%d\", \"%@\", \"%@\", \"%@\", \"%@\", \"%@\", \"%@\", \"%d\")", 9, @"date", @"purpose", @"start", @"end", @"miles", @"tolls", 0]; 
    const char *insert_stmt = [insertSQL UTF8String]; 
    sqlite3_prepare_v2(expenseDB, insert_stmt, -1, &statement, NULL); 
    if (sqlite3_step(statement) == SQLITE_DONE) 
    { 
    // status.text = @"Contact added"; 

    } else { 
     // status.text = @"Failed to add contact"; 
    } 
    sqlite3_finalize(statement); 
    sqlite3_close(expenseDB); 
} 
[timestamp release]; 

}

Quand je lance ce code, je reçois un EXC_BAD_ACCESS du thread principal. Je pensais que cette erreur apparaissait généralement lorsqu'une valeur NSString était assignée comme valeur de chaîne?

Des pensées?

Répondre

4

Ne publiez pas d'horodatage, vous ne l'attribuez pas ou ne le conservez pas.

[timestamp release]; 
+0

Ah! C'était ça. Toujours en train de maîtriser la gestion de la mémoire ... été patiner avec Java. Merci! – coder