Я очень много нового Sqlite операции, До сих пор я работал только UI + какой-то веб-службувставки в SQLite базы данных
Что я столкнулся вопрос заключается в том,
Я создаю таблицу от терминала и вставлять в него значения из Xcode, сопоставляя имя таблицы. Таблица состоит из 4 полей, из которых 2 принадлежит таблице, а 2 - это внешние ключи.
Когда я даже вставляю запрос в мое приложение FREEZES в этот момент.
Не двигается дальше, не допуская каких-либо операций.
Вот мой запрос
-(bool)insertMatchSampleQuest:(QuestionDTO*)questionDTO
{
NSMutableArray* matchQesA=[questionDTO matchQuesA];
NSLog(@"MTQ QuestionsArray :- %@",[matchQesA description]);
NSLog(@"MTQ QuestionsArray count :- %d",[matchQesA count]);
FMDatabase* db=[SqlLiteDAOFactory createConnection];
for(int i=0;i<[matchQesA count];i++)
{
MTQuestionDTO *mTQuestionDTO =[matchQesA objectAtIndex:i];
NSLog(@"value of testsample id is :- %@",questionDTO.testsampledid);
NSLog(@"value of sampletest id is :- %@",questionDTO.sampletestid);
NSLog(@"value of MTQ Question id :- %@",mTQuestionDTO.mtq_question_id);
NSLog(@"value of MTQ Question Text :- %@",mTQuestionDTO.mtq_question_text);
[db executeUpdate:@"insert into matchquestion (testsampledID,sampletestid,mtq_question_id,mtq_question_text) values(?,?,?,?)",questionDTO.testsampledid,questionDTO.sampletestid,mTQuestionDTO.mtq_question_id,mTQuestionDTO.mtq_question_text];
if ([db hadError])
{
NSLog(@"database error");
NSLog(@"Err in inserting %d: %@", [db lastErrorCode], [db lastErrorMessage]);
[db close];
}
}
[db close];
return TRUE;
}
Когда я NSLog значения, это дает мне правильные значения. Также, когда я запускаю тот же запрос из значения Terminal, вставлен в базу данных.
Я запускаю этот запрос в свой массив. У меня есть полный массив, и вы хотите вставить элементы в таблицу до подсчета массива.
Почему мое приложение МОРОЗИЛЬНИК, если его ошибка, то он должен идти в блок ошибок, его не туда, Так что я сталкиваюсь с трудностями в отслеживании.
Какая ошибка я совершил.
Заранее спасибо.
Если это замерзает, это предполагает, что вы должны одновременно открыть какой-либо другой запрос, который блокирует этот. Мы не можем подтвердить это на основе предоставленного кода. У вас должен быть только один объект «FMDatabase» за один раз (и если вы используете его из нескольких потоков, используйте вместо него «FMDatabaseQueue»). – Rob
Привет @ROb, пожалуйста, найдите мой выше код, отредактированный, надеюсь, что поможет понять, что я делаю, создавая объект FMDATABASE при запуске и работе в конце – Sagar
@stallone: см. Мой ниже ответ –