2015-09-10 6 views
0

У меня есть sqlite db, и я хочу вставить в него строку. Я использовал этот код для вставки строк и создания запроса.Вставить строки в базу данных sqlite

-(void)InsertRecords{ 

    querySQL1 = @"select category from notes where id=5"; 
    const char * query_stmt = [querySQL1 UTF8String]; 

    sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL); 

    NSString *insertSQL = [NSString stringWithFormat: 
          @"INSERT INTO notes (id, title, content,dataAdd,category) VALUES (\"%@\", \"%@\", \"%@\" ,\"%@\",\"%@\")", 
          @"5", 
          @"georgiana", 
          @"20", 
          @"12.09.2019", 
          @"public"]; 

    const char *insert_stmt = [insertSQL UTF8String]; 
    sqlite3_stmt *updateStmt = nil; 

    sqlite3_prepare_v2(contactDB, insert_stmt, -1, &statement, NULL); 
    if(sqlite3_prepare_v2(contactDB, insert_stmt, -1, &statement, NULL) == SQLITE_OK){ 

    if (sqlite3_step(statement) == SQLITE_DONE) 
    { 
     NSLog(@"data inserted"); 

    } 
    else{ 
     NSLog(@"Error while creating update statement. '%s'", sqlite3_errmsg(contactDB)); 

    } 
    } 


    else 
     NSLog(@"Error while creating update statement. '%s'", sqlite3_errmsg(contactDB)); 




    querySQL1 = @"select id from notes where category LIKE 'public'"; 
    query_stmt = [querySQL1 UTF8String]; 

    sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL); 

    NSString *[email protected]""; 
    while (sqlite3_step(statement) == SQLITE_ROW) 
    { 
     idNr =[NSString stringWithUTF8String: 
       (const char *) sqlite3_column_text(statement, 0)]; 

    } 

    NSLog(@"%@",idNr); 

    sqlite3_finalize(statement); 
    sqlite3_close(contactDB); 
} 

Все в порядке, но когда я снова открываю приложение, я не нахожу значения для idNr.

Любая полезная помощь будет оценена по достоинству.

+0

возможно сог база данных dsnt есть что-нибудь с подобными общественными вот почему? –

+0

и почему это ничего общего, если я его вставляю? – AlinaBM

ответ

1

NSString распределение неправильное утверждение, alloc NSString объект здесь.

Метод stringWithUTF8String: - класс метод. Это сделает выделение для NSString.

Заменить код, как показано ниже:

NSString *idNr = @""; 
while (sqlite3_step(statement) == SQLITE_ROW) { 
    idNr = [NSString stringWithUTF8String: 
       (const char *) sqlite3_column_text(statement, 0)]; 

} 
+0

Большое спасибо, Это была проблема. – AlinaBM

+0

, но у меня теперь есть другая проблема, когда я снова запускаю приложение, вставленная строка там отсутствует. – AlinaBM

+0

Причина этого заключается в том, что в жизненном цикле приложения есть место, где вы перезаписываете или создаете новую базу данных. Так что предыдущие значения не являются персистентностью. Убедитесь, что ваша база данных/таблица не перезаписана или не создана. – Kampai

Смежные вопросы