0

私はここの初心者です。デバイスで実行しているときに、SQLite データベースにデータを挿入できません。以下のコードを使用して SQLite に接続しています。シミュレーターでは完璧に動作しますが、iPad デバイスでは動作しません。誰でも助けてもらえますか?ありがとうございました。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"DADatabase1.sqlite"];
NSLog(@"%@", writableDBPath);

FMDatabase* db = [FMDatabase databaseWithPath:writableDBPath];

/*if ([fileManager fileExistsAtPath:writableDBPath] == NO) {
    NSString *resourcePath = [[NSBundle mainBundle] pathForResource:@"DADatabase1.sqlite" ofType:@"sqlite"];
    [fileManager copyItemAtPath:resourcePath toPath:writableDBPath error:nil];
}*/
[db open];
[db traceExecution];
[db beginTransaction];
BOOL success = [db executeUpdate:[NSString stringWithFormat:@"insert into PatientDetails (patAge) values (?)",patAge.text]];
if(!success)
{
    NSLog(@"Query not success!");
}
else {
    NSLog(@"Query success!");
}
//NSString *query = [NSString stringWithFormat:];
[db commit];
[db close];
4

3 に答える 3

2

Databaseプロジェクト リソース フォルダーにを入れましたTablesか? データベースファイルをApps Documentフォルダーにコピーする必要があります。

+ (BOOL)initDB {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"sqlite.db"]; 

NSFileManager *fileManager = [NSFileManager defaultManager];

if (![fileManager fileExistsAtPath: path])
{
    NSString *bundle =  [[ NSBundle mainBundle] pathForResource:@"sqlite" ofType:@"db"];
    [fileManager copyItemAtPath:bundle toPath:path error:nil];
    return YES;
}
    return NO;
}
于 2012-08-06T07:38:39.090 に答える
1

CREATE TABLE提供されているサンプル コードにはステートメントがありません。にはINSERT挿入する場所がありません。sqlite3シミュレーターでの開発中に (コマンド ライン ツールを使用して) 手動でテーブルを作成しましたか?

于 2012-08-06T07:35:51.523 に答える
0

注意

シミュレータのファイル名では大文字と小文字は区別されませんが、デバイスでは大文字と小文字が区別されます。ファイル名が完全に同じであることを確認してください。

于 2012-08-06T07:41:25.537 に答える