私はiPhoneのiOS 4でSQLiteを使用していますが、私の更新ステートメントによる変更は保存されません。最初はおそらくアプリケーションを終了すると、何とかデータベースを削除するかもしれないと思っていたが、それらは同じセッション中に保存されていない。私のデータベースを初期化するコード(FMDBを使用して)されていますSQLiteの変更が保存されない
-(SQLiteDal*) init {
pool = [[NSAutoreleasePool alloc] init];
self = [super init];
if(self != nil){
// Setup some globals
NSString *databaseName = [self getDbPath];
NSLog([NSString stringWithFormat:@"db path: %@", databaseName]);
db = (FMDatabase *)[FMDatabase databaseWithPath:databaseName];
if (![db open]) {
NSLog(@"Could not open db.");
[pool release];
return 0;
}
}
//[self checkAndCreateDatabase];
return self;
}
#pragma mark DB Maintenance
-(NSString *)getDbPath {
NSString *databaseName = @"myapp.db";
// Get the path to the documents directory and append the databaseName
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
databaseName = [documentsDir stringByAppendingPathComponent:databaseName];
return databaseName;
}
これらのメソッドの両方が、その後、私は呼んでテーブルに挿入するためのデータベースを作成するために呼び出さ、以下のとおりです。
[db executeQuery:@"INSERT INTO MyTable (Name, Description, Area, Price, ID) VALUES (?,?,?,?,?)",
f.Name,
f.description,
f.area,
f.price,
f.id];
問題私は、以下のステートメントを使用してMyTable
からの読み取りに来るとき、私は戻って何かを得ることはありません、次のとおりです。
FMResultSet *rs = [db executeQuery:@"SELECT * FROM MyTable WHERE ID = ?", id];
while ([rs next]) {
//.. this is never called
限り、私は私が見ることができるように何も欠けていないと、DBは書き込み可能な場所にあるようです。
uは、SQLiteのマネージャでウルデシベルを開いたn個挿入した後保存した記録をチェックしていますか? – booleanBoy
いいえ、データベースは電話にあります。 – Echilon
NSString stringWithFormatを使用してクエリをexecuteQueryメソッドに渡して.....またそれをUTF8Stringに変換してください...試してみてください – booleanBoy