我想在Delegate文件中使用相同的数据库对象& Custom Created databse头文件的Controller File包含Sqlite3&类型的对象。你的方法 像OpenDB& CreateTable& InserData。
我现在只是iphone编程的初学者,请帮帮我
答案 0 :(得分:1)
app delegate文件就像一个全局文件,您只需在app delegate中导入自定义创建的数据库头文件,并创建自定义创建的数据库头文件的对象,假设文件名是 dbOperations.h
导入它并创建它的对象,然后执行属性,合成等等。
在任何视图控制器中,您只需要导入“appDelegate.h”文件并使其对象在视图中加载如
objAppdelegate = [[UIApplication sharedApplication] delegate];
您可以通过
访问 dbOperations.h 文件的所有方法和成员objAppdelegate.objdbOperations 。
你在appdelegate中放置的内容将保持与整个应用程序,所有viewControllers和所有类共享和共享。
你的createDatabase方法应该是这样的,当你的应用程序完成加载appDelegate文件的方法时调用这个方法。
-(void)checkAndCreateDatabase
{
appDelegate = (SexarobicsAppDelegate *)[[UIApplication sharedApplication]delegate];
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir =[documentPaths objectAtIndex:0];
NSString *databasePath = [documentsDir stringByAppendingPathComponent:@"database.sqlite"];
//NSLog(@"%@", databasePath);
NSFileManager *fileManager = [NSFileManager defaultManager];
if(![fileManager fileExistsAtPath:databasePath])
{
NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"database.sqlite"];
[fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];
}
//Open DB Connection
if(sqlite3_open([databasePath UTF8String], &database) != SQLITE_OK)
sqlite3_close(database);
return;
}
以这种方式触发sql查询,在上面的代码@“database.sqlite”中是你的db文件名。
-(void)getData
{
selectStmt = nil;
// fire query and perform those related operations
// Release the compiled statement from memory
sqlite3_finalize(selectStmt);
selectStmt = nil;
}