Я создал приложение, в котором я использую sqlite для хранения данных. Он хорошо работает в симуляторе, но когда он работает на реальном устройстве, он перестает отвечать на sqlite. Даже код не отвечает на команду sqlite .. Вот мой код ..
- (void)viewDidLoad {
//Create Database
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *dir=[paths objectAtIndex:0];
NSString *dirString=[dir stringByAppendingPathComponent:@"ABC.sqlite"];
databasepath=[[NSString alloc]initWithString:dirString];
NSFileManager *fileManager=[NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:databasepath]==NO)
{
const char *dbpath=[databasepath UTF8String];
if (sqlite3_open(dbpath, &contactDB)==SQLITE_OK)
{
char *errMsg;
const char *createSQL="CREATE TABLE IF NOT EXISTS QUESTIONS(ID INTEGER PRIMARY KEY AUTOINCREMENT,QUESTIONSLIST TEXT,ANSWER1 TEXT,ANSWER2 TEXT,ANSWER3 TEXT,ANSWER4 TEXT,CORRECTANSWER TEXT)";
if (sqlite3_exec(contactDB, createSQL, NULL, NULL, &errMsg) !=SQLITE_OK)
{
NSLog(@"Failed to create table");
}
sqlite3_close(contactDB);
}
}
[super viewDidLoad];
}
-(void)xyz{
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *dir=[paths objectAtIndex:0];
NSString *dirString=[dir stringByAppendingPathComponent:@"ABC.sqlite"];
databasepath=[[NSString alloc]initWithString:dirString];
const char *dbpath=[databasepath UTF8String];
sqlite3_stmt *statement;
if (sqlite3_open(dbpath, &contactDB)==SQLITE_OK)
{
NSString *querySQL=[NSString stringWithFormat:@"select * from questions order by random() LIMIT 1"];
const char *query=[querySQL UTF8String];
if (sqlite3_prepare_v2(contactDB, query, -1, &statement, NULL)==SQLITE_OK)
{
if (sqlite3_step(statement)==SQLITE_ROW)
{
NSString *questionField=[[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statement, 1)];
questionView.text=questionField;
NSString *option1=[[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statement, 2)];
[answer1 setTitle:option1 forState:UIControlStateNormal];
NSString *option2=[[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statement, 3)];
[answer2 setTitle:option2 forState:UIControlStateNormal];
NSString *option3=[[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statement, 4)];
[answer3 setTitle:option3 forState:UIControlStateNormal];
NSString *option4=[[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statement, 5)];
[answer4 setTitle:option4 forState:UIControlStateNormal];
NSString *option5=[[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statement, 6)];
correctAnswer.text=option5;
correctAnswer.hidden=NO;
[option1 release];
[option2 release];
[option3 release];
[option4 release];
[option5 release];
}
sqlite3_finalize(statement);
}
sqlite3_close(contactDB);
}
}