iphone sqlite вставить ... EXC_BAD_ACCESS - PullRequest
       1

iphone sqlite вставить ... EXC_BAD_ACCESS

0 голосов
/ 30 сентября 2011

Прежде всего, я довольно новичок в разработке для iPhone, и совершенно новый, чтобы включить sqlite3 в мое приложение. Я использовал его в своих приложениях для Android и Blackberry, поэтому я знаю основные команды и тому подобное. Вот моя проблема: я создал БД и таблицу программно (оба были созданы правильно). Вот код, который я использовал для создания таблицы:

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)";

Таблица была создана правильно.

Эта функция, которую я использовал для сохранения данных:

- (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];

}

Когда я запускаю этот код, я получаю EXC_BAD_ACCESS из основного потока. Я думал, что эта ошибка обычно появляется, когда значение NSString было назначено в качестве строкового значения?

Есть мысли?

1 Ответ

4 голосов
/ 30 сентября 2011

Не выпускайте метку времени, вы не выделяете и не сохраняете ее.

[timestamp release];
...