2012-02-01 3 views
2

Я хочу использовать тот же объект базы данных в файл делегатом & Controller Файл пользовательского файла заголовка создания Databse, который содержит объект типа Sqlite3 & методов тобою как OpenDB & CreateTable & InserData.Sqlite Database Application

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

ответ

1

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

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

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

в любом контроллере зрения нужно просто импортировать файл «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; 
} 
+1

Thnak you @Hadley для вашей поддержки. , но мой проект build & run, но я получаю три предупреждения и даже подключение к базе данных не может быть открыто. –

+1

Mr. @ Hadley что я действительно делаю в вышеупомянутом проекте, см. Мой следующий вопрос. –

+0

, вероятно, вы не указали открытый оператор базы данных в своем методе создания базы данных. Вам нужно открыть базу данных, прежде чем выполнять какие-либо операции с БД (не уверен в случае выбора запроса, но будет лучше, если вы также откроете db в операции выбора). – HarshIT