現在テーブルが 1 つしかない SQLite データベースを作成しました。それを Xcode に接続し、必要なすべての手順を実行し、ファイルの書き込みに問題があることを発見しました。
テーブルには 5 つの項目 (主キー、名前、生年月日、大学名、コース名) があります。
私のデータを保存している間、それは言います:
キャッチされない例外 'NSInternalInconsistencyException' が原因でアプリを終了しています。理由: 'add ステートメントの作成中にエラーが発生しました。「ライブラリ ルーチンが順番どおりに呼び出されませんでした」
ブレークポイントを設定して問題の場所を見つけましたが、解決できません。
-(void)saveStudentInfo{
sqlite3_stmt *statement = NULL;
const char *sql = "insert into studentInfo (name,collegeName,courseName) Values (?, ?, ?)";
if (sqlite3_open("my_db_filename.db", &database) == SQLITE_OK)
{
//sqlite3_stmt *addStmt;
if(sqlite3_prepare_v2(database, sql, -1, &addStmt, NULL) != SQLITE_OK)
{
NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database));
} else {
// do things with addStmt, call sqlite3_step
sqlite3_bind_text(addStmt, 1, [studentName UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(addStmt, 3, [studentCollegeName UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(addStmt, 4, [studentCourseName UTF8String], -1, SQLITE_TRANSIENT);
if(SQLITE_DONE != sqlite3_step(addStmt))
NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
else
studentID = sqlite3_last_insert_rowid(database);
sqlite3_finalize(statement);
}
sqlite3_close(database);
}
if (sqlite3_step(statement)==SQLITE_DONE){
UIAlertView *error = [[UIAlertView alloc]initWithTitle:@"Done" message:@"Files were added to database" delegate:self cancelButtonTitle:@"Close" otherButtonTitles:nil, nil];
[error show];
}
else {
UIAlertView *error = [[UIAlertView alloc]initWithTitle:@"Error" message:@"StudentOrganizer could not add database" delegate:self cancelButtonTitle:@"Close" otherButtonTitles:nil, nil];
[error show];
}