ビジネスロジックなどからSQLiteメソッドを抽象化するクラスを作成しようとしています。しかし、私のデータベースにアクセスすることはできません。作成した。以下のコードをご覧ください。私は指定されたパスでデータベースを開きます。その後、私は後でそれを閉じます。終了後、私は端末を使ってアプリケーション内のDocumentsディレクトリを調べます。この時点で、指定したファイルはありません。データベースにデータを挿入するときにのみファイルを作成しますか?または、データベースを正しく作成していないのですか?私のios sqlite3データベースが作成されていません
#import "SQLController.h"
@implementation SQLController
@synthesize database;
-(id)initWithDefaultDB {
return [self initWithDBPath:[self dbFilePath]];
}
-(id)initWithDBPath:(NSString *)dbPath {
self = [super init];
if(self) {
sqlite3 *db;
const char *dbPathCString = [dbPath UTF8String];
int result = sqlite3_open(dbPath, &db);
if (result != SQLITE_OK) {
NSString *errorTag = @"Failed to open database at ";
NSString *errorMessage = [errorTag stringByAppendingString:dbPath];
NSLog(errorMessage);
sqlite3_close(db);
} else {
const char *createQuery = "CREATE TABLE IF NOT EXISTS items (title TEXT, details TEXT, category TEXT);";
self.database = db;
char *error;
if (sqlite3_exec(self.database, createQuery, NULL, NULL, &error) != SQLITE_OK) {
sqlite3_close(self.database);
NSLog(@"Failed to create table");
NSAssert(0,@"Error creating table: %s", error);
}
}
}
return self;
}
-(NSString *)dbFilePath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
return [documentsDirectory stringByAppendingPathComponent:@"testdb.sqlite"];
}
@end
sqlite3_open(DBPATH、&db); - コンパイラはあなたがC文字列の代わりにNSStringの合格することについては何も言わなかった –