Приложение Sqlite Database - PullRequest
       1

Приложение Sqlite Database

2 голосов
/ 01 февраля 2012

Я хочу использовать один и тот же объект базы данных в файле делегата и в файле контроллера из пользовательского заголовочного файла базы данных, созданного пользователем, который содержит объект типа Sqlite3 и те методы как OpenDB, CreateTable и InserData.

Я сейчас новичок в программировании на iphone, поэтому, пожалуйста, помогите мне

1 Ответ

1 голос
/ 01 февраля 2012

Файл делегата приложения похож на глобальный файл, вы просто импортируете свой Пользовательский файл заголовка созданной базы данных в делегат приложения и создаете объект Пользовательский файл заголовка созданной базы данных , предполагая,имя файла dbOperations.h

в делегате приложения

импортируйте его и создайте его объект, затем выполните свойство, синтезируйте и все.

в любом контроллере представления вам просто нужно импортировать ваш файл "appDelegate.h" и сделать так, чтобы его объект загружался как

objAppdelegate = [[UIApplication sharedApplication] делегат];

и выможет получить доступ ко всем вашим методам и членам файла 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" - это имя вашего файла базы данных.

-(void)getData
{
    selectStmt = nil;

     // fire query and perform those related operations

    // Release the compiled statement from memory
    sqlite3_finalize(selectStmt);
    selectStmt = nil;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...