Прежде всего, я довольно новичок в разработке для 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 было назначено в качестве строкового значения?
Есть мысли?