Login.sql という名前の sqlite3 データベース ファイルを、作成中の iPhone アプリケーションに接続しようとしています。Documentsフォルダー、xcodeプロジェクトを含むフォルダー、プロジェクトの派生データなど、いくつかの場所に入れてみましたが、Xcodeはファイルを認識していないようです。次のコードは、didFinishLaunchingWithOptions の下の AppDelegate ファイルにあります (以前はビュー コントローラーにありましたが、動作すると考えて移動しました。
コードは次のとおりです。
NSArray *dirPaths;
// databaseName = [[NSBundle mainBundle] pathForResource:@"DBLogin.sql" ofType:@"db"];
databaseName= @"Login.sql";
// Get the documents directory
dirPaths = NSSearchPathForDirectoriesInDomains(
NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
// Build the path to the database file
//databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent: @"DBLogin.sql"]];
NSFileManager *filemgr = [NSFileManager defaultManager];
if ([filemgr fileExistsAtPath: databasePath ] == NO)
{
const char *dbpath = [databasePath UTF8String];
if (sqlite3_open(dbpath, &database) == SQLITE_OK)
{
NSLog(@"DATABASE LOADED");
char *errMsg;
const char *sql_stmt = "CREATE TABLE IF NOT EXISTS User (id varchar(20) PRIMARY KEY , password varchar(20))";
if (sqlite3_exec(database, sql_stmt, NULL, NULL, &errMsg) != SQLITE_OK)
{
status.text = @"Failed to create table";
}
status.text = @"Database Connected";
sqlite3_close(database);
} else {
status.text = @"Failed to open/create database";
}
}
else{
NSLog(@"Connect!");
}
return YES;
データベース ファイルにアクセスするコードは次のとおりです。
基本的に、このコードに新しいデータベースを配置して、それが問題であるかどうかを確認するたびに、コードはテーブルに作成されたテーブルが存在しない関数で新しい一時SQLデータベースファイルを作成すると思います。どうすればいいのかわからず、これが私を夢中にさせています。このコードを取得して私のデータベースを認識させる方法について誰かが考えている場合は、感謝します。コピー バンドル リソースのビルド ページにリンクされたデータベースが既にありますが、アクセスしません。
他に情報が必要な場合はお知らせください。
前もって感謝します!