我有多個視圖控制器,registrationviewcontroller,contactsviewcontroller,addnewcontactsviewcontroller等大麻煩與值不插入到SQLite數據庫-iPhone
我在registrationviewcontroller
DatabaseCRUD *database = [[DatabaseCRUD alloc] init];
NSMutableString *registrationquery=[NSMutableString stringWithFormat:@"insert into BARvalues values ('%@','%@','%@','%@','%@','%@')",[name text],[emailAddress text],[mobileNumber text],[password text],[country text],@"0"];
NSLog(@"registrationquery is %@",registrationquery);
[database updatenewregistration:registrationquery];
[database release];
DatabaseCRUD *database1 = [[DatabaseCRUD alloc] init];
NSMutableString *registrationquery1=[NSMutableString stringWithFormat:@"insert into contacts values ('1234','1234')"];
NSLog(@"registrationquery is %@",registrationquery1);
[database1 updatenewregistration:registrationquery1];
[database1 release];
DatabaseCRUD *database2 = [[DatabaseCRUD alloc] init];
NSMutableString *registrationquery2=[NSMutableString stringWithFormat:@"insert into contacts values ('abcd','abcd')"];
NSLog(@"registrationquery is %@",registrationquery2);
[database2 addcontacts:registrationquery2];
[database2 release];
上述代碼作品下面的代碼很好。它將值插入sqlite數據庫。這裏是問題,我有一個不同的viewcontroller(聯繫人,addcontacts)幾乎相同的代碼和值不會插入sqlite數據庫。這裏是代碼。
DatabaseCRUD *database = [[DatabaseCRUD alloc] init];
NSMutableString *registrationquery=[NSMutableString stringWithFormat:@"insert into contacts values ('raja','shekar')"];
NSLog(@"registrationquery is %@",registrationquery);
[database updatenewregistration:registrationquery];
[database release];
DatabaseCRUD *database1 = [[DatabaseCRUD alloc] init];
NSMutableString *registrationquery1=[NSMutableString stringWithFormat:@"insert into contacts values ('rajesh','neelam')"];
NSLog(@"registrationquery is %@",registrationquery1);
[database1 addcontacts:registrationquery1];
[database1 release];
我沒有看到有任何理由對數據庫對象將insertin在一個視圖 - 控制和犯規在其他視圖 - 控制。任何幫助將不勝感激。我試圖找出哪裏錯誤是整天,我不想再浪費時間。任何幫助請?
我在數據庫對象的每個方法上放置了斷點,看它是否插入,根本沒有錯誤。它似乎通過sqlstatment傳遞,但沒有插入發生。這裏是保存databaseHere中的值的代碼是數據庫插入的代碼。
-(void) addcontacts :(NSString *)query
{
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK)
{
NSLog(@"query is %@",query);
sqlStatement=[query cStringUsingEncoding:NSASCIIStringEncoding];
if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK)
{
while(sqlite3_step(compiledStatement) == SQLITE_ROW)
{
NSLog(@"new contact updated");
}
sqlite3_finalize(compiledStatement);
}
sqlite3_close(database);
}
}
compileStatement定義在哪裏? (s/b sqlite3_stmt * compiledStatement = nil;)如果這是在addcontacts方法中定義的,那最好。 – KevinDTimm
還有一件事,插入sqlite3_step返回SQLITE_DONE,而不是SQLITE_ROW – KevinDTimm
@kevinDTimm我沒有在我的updatenewregistration方法SQLITE_DONE,但它仍然插入。像我說的,這兩種方法從registrstionviewcontroller工作正常,他們不工作從其他視圖控制器 – Rajashekar