10

私が行っているsqliteプロジェクトに問題があります。FMDBを使用しています。簡単な例に従いますが、機能しません。そして、私はエラーを見つけることができません。私はターミナルからデータベーススキーマを作成し、それにいくつかのデータを配置しました。私はiosdevを初めて使用するので、手順を実行したかどうかは正確にはわかりません。これは私がしたことです:

1-データベーススキーマを作成し、いくつかのフィールドを追加しました。2-database.dbをxcodeのプロジェクトフォルダーにコピーしました。3-FMDBファイルを追加します。4-私はsqlite3.dylibを追加します5-私はこのコードを置きます:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.dbname = @"database.db";
    NSArray * docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString * docDIr = [docPath objectAtIndex:0];
    self.dbpath = [docDIr stringByAppendingPathComponent:dbname];

    [self checkDB];

    [self getQ];

    return YES;
}
-(void) getQ
{
    FMDatabase * db = [FMDatabase databaseWithPath:dbpath];
    [db open];

    FMResultSet * result = [db executeQuery:@"SELECT * FROM table1"];

    NSLog(@"last Error: %@",[db lastErrorMessage]);
    NSLog(@"result: %@", result);
}
-(void) checkDB
{
    BOOL success;
    NSFileManager * fm = [NSFileManager defaultManager];
    success = [fm fileExistsAtPath:dbpath];
    NSError * error = [[NSError alloc] init];
    if (success) return;
    NSLog(@"result:");
    NSString * dbPathFromApp = [[[NSBundle mainBundle] resourcePath]stringByAppendingPathComponent:self.dbname];

    [fm copyItemAtPath:dbPathFromApp toPath:dbpath error:&error];           
}

どうやらデータベースは空ですが、どうしたのでしょうか。table1が見つからないのはなぜですか?sqlite guiを使用してファイルを開くと、テーブルは正常に表示されます。助けてくれてありがとうコンソールは次の行を表示します:2013-03-02 14:03:31.839 myApp [21433:c07]最後のエラー:そのようなテーブルはありません:table1 2013-03-02 14:03:31.841 myApp [21433: c07]結果:(null)

4

2 に答える 2

24

いくつかの考え:

  1. データベースがバンドルに追加されたことを確認します。ターゲット設定に移動し、[ビルドフェーズ]を選択し、[バンドルリソースのコピー]を展開して、データベースがそこにリストされていることを確認します。そうでない場合は、「+」ボタンをクリックして追加します。

    バンドル

  2. シミュレータをリセットします。アプリを実行してデータベースを適切にコピーしなかった場合は、ドキュメントフォルダーに空のデータベースが作成されます。シミュレーターをリセットすることにより、そこにある可能性のある空白のデータベースを取り除くことができます。

  3. それでも機能しない場合は、シミュレータでバンドルデータベースを確認します。シミュレーターフォルダ(〜/ Library / Application Support / iPhone Simulator)に移動し、アプリを見つけてバンドルを開き(アプリ自体をクリックして「パッケージの内容を表示」と言うことにより)、そこにあるデータベースを確認して作成します。それがあなたを持っていることを確認してくださいtable1

于 2013-03-02T17:20:36.110 に答える
-1

データベースファイルを追加した後、それを選択し、ターゲットメンバーシップにチェックマークを付けてください。

添付ファイルを確認してください

于 2021-03-08T10:35:51.430 に答える