iOS の sqlite3 データベースにテキスト データを挿入しようとしています。
データをsqlite3データベースに保存するために次のコードを書きました。
NSFileManager *fileMgr = [NSFileManager defaultManager];
NSString *dbPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"MgDB.sqlite"];
BOOL success = [fileMgr fileExistsAtPath:dbPath];
if(!success)
{
NSLog(@"File Not Found");
}
if((!sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK))
{
NSLog(@"Error in MyInfo");
}
const char *sql = "Insert into MyDB (name,address,email) values('%@','%@','%@')";
sqlite3_bind_text(sqlStmt, 0, [Name UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(sqlStmt, 1, [Address UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(sqlStmt, 2, [Email UTF8String], -1, SQLITE_TRANSIENT);
if(sqlite3_prepare(database, sql, -1, &sqlStmt, NULL))
{
NSLog(@"Error in Loading database");
}
if (sqlite3_exec(database, sql, NULL, NULL, NULL) == SQLITE_OK)
{
return sqlite3_last_insert_rowid(database);
}
if(sqlite3_step(sqlStmt) == SQLITE_ROW)
{
NSLog(@"ERROR");
}
}
@catch (NSException *exception)
{
NSLog(@"%@",exception);
}
@finally
{
sqlite3_finalize(sqlStmt);
sqlite3_close(database);
}
上記のコードによると、最後の挿入 ROWID を返して、挿入されたかどうかを確認します。
ビューにテキスト データを保存した後、ROWID が増加しました。
ただし、FireFox sqlite3 ツールでデータベースをチェックすると、挿入したデータはありません。
そのため、実行を停止してアプリを再実行し、データを再度追加します。
最後の挿入 ROWID は古いカウントと同じです。1 つも増加しません。
sqlite データベースにデータを保存しない理由を知りたいです。
私のコードに問題はありますか?
私を助けてください。
前もって感謝します。