我正在尝试将我称为 Login.sql 的 sqlite3 数据库文件连接到我正在编写的 iphone 应用程序。Xcode 似乎没有重新识别该文件,即使我尝试将其放入多个位置,包括 Documents 文件夹、包含 xcode 项目的文件夹以及该项目的 Dervived Data。以下代码位于 didFinishLaunchingWithOptions 下的 AppDelegate 文件中(它曾经在 View Controller 中,但我认为它可以工作而移动它。
这是代码: NSString *docsDir;
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;
访问数据库文件的代码在这里:Xcode login screen sqlite3 database authentication issue我只是将它包括在内,以防此代码可能导致问题。
基本上每次我在这段代码中放置一个新数据库以查看这是否是问题时,我认为代码会创建一个新的临时 sql 数据库文件,其中包含在表中创建的表不存在函数。我不知道该怎么办,这让我发疯。如果有人对如何让此代码识别我的数据库有任何想法,我们将不胜感激。我已经将数据库链接到复制捆绑资源构建页面,但它仍然无法访问它。
如果您需要任何其他信息,请告诉我。
提前致谢!