以下のコードを使用して、あるクラスで db を作成し、それを viewController で使用し、同じコードを newViewController の別のクラスで使用しています。
それが正しいか ?または、その場所に新しいデータベースを作成するか、既存のデータベースがある場合は使用しますか?
または、パスのみを使用する必要がありますか?
以下の例で試したところextern NSString *path
、漢字を受け取って開けませんでした。
基本的に 2 番目のコントローラーでは、データを読み取るだけです。
したがって、パスとデータベースを開いた状態で、パス、データベースを介してdbにアクセスしようとしています。
以下のコードを使用して作成し、別のビューコントローラーから 2 回目に開きたい場合はどうすればよいですか。
助けてください。
前もって感謝します。
第 1 コントローラ:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsPath = [paths objectAtIndex:0];
NSString *path = [docsPath stringByAppendingPathComponent:@"test.db"];
FMDatabase *database;
database = [FMDatabase databaseWithPath:path];
[database open];
[database executeUpdate:@"DROP TABLE IF EXISTS **"];
[database executeUpdate:@"CREATE TABLE "];
//Select query for single row
FMResultSet *s = [database executeQuery:@"SELECT COUNT(*) FROM table"];
if ([s next]) {
int Count = [s intForColumnIndex:0];
}
//DO Something
[database close];
上記のコードは viewcontroller 1 で完全に機能しています。
View Controller 2 で試したこと .それでも機能しませんでした。
extern NSString *path;
FMDatabase *database;
database = [FMDatabase databaseWithPath:path];
[database open];
パスが中国語のように見えるため、ここでエラーが発生します。
エラーはEXC_BAD_ACCESS code
です。
グローバルデータベースも試しました:
extern FMDatabase *database;
そしてそれを
[database open];
それでも同じエラーが発生します。
最後に、2番目のコントローラーで次のコードで動作しました。
それが正しい方法かどうか、または db open として何かを使用できるかどうかを確認したかっただけです。
しかし、私はそれを試してみましたが、うまくいきません。また、 FMDB でそれを行う方法がわからないため、エラーハンドラーを使用していません。
前もって感謝します。
次の実装が正しいかどうか教えてください。:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsPath = [paths objectAtIndex:0];
NSString *newpath = [docsPath stringByAppendingPathComponent:@"test.db"];
FMDatabase *database2 ;
database2 = [FMDatabase databaseWithPath:newpath];
[database2 open];
//DO Something
[database2 close];