2016-06-04 7 views
0

Я написал запрос вставки SQLITE для вставки некоторых данных в таблицу базы данных sqlite. Но теперь я пытаюсь добавить новый столбец в эту таблицу sqlite и вставить новые значения в этот столбец. Так что всякий раз, когда я пытаюсь обновить мою таблицу базы данных, она должна каждый раз создавать новый столбец и обновлять и вводить новые значения. Ниже приведен мой код изменения и обновления, который я делаю одним нажатием кнопки.Таблица базы данных Alter Sqlite и запрос на обновление для iOS

-(void)updateStatusData:(NSString *)txt { 

sqlite3_stmt *statement; 
dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
docsDir = [dirPaths objectAtIndex:0]; 
databasePath = [docsDir stringByAppendingPathComponent:@"db.sqlite"]; 

NSLog(@"%@",databasePath); 
if (sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) 
{ 



    NSString *updateSQL = [NSString stringWithFormat:@"ALTER TABLE STATUS ADD COLUMN newcolumn; UPDATE STATUS SET newcolumn=%@ WHERE rowid=1",txt]; 

    const char *update = [updateSQL UTF8String]; 
    NSLog(@"update statmnt %s",update); 
    sqlite3_prepare_v2(database, update, -1, &statement, NULL); 
    if (sqlite3_step(statement) == SQLITE_DONE) 
    { 
     sqlite3_bind_text(statement, 1, [txt UTF8String], -1, SQLITE_TRANSIENT); 
     NSLog(@" Status Results Updated Successfully"); 

    } else { 
     NSLog(@"error %s",sqlite3_errmsg(database)); 
    } 
    sqlite3_finalize(statement); 
    sqlite3_close(database); 
} 
} 

Мое новое имя столбца - это новая колонка, а значения, которые он должен сохранить, находятся в 'txt'. Мой вопрос, когда я запускаю этот код, я получаю новый столбец, вставленный в мою таблицу базы данных sqlite. Но введенное значение равно NULL для этой новой колонки. Код должен работать именно так, когда вы обновляете свой статус на WHATSAPP, он сохраняет обновленный статус ... Пожалуйста, помогите мне, что я делаю неправильно. Любая помощь приветствуется.

+0

убедитесь, что txt не равен нулю – Alok

+0

Вам также может потребоваться предоставить кавычки: 'UPDATE STATUS SET newcolumn = '% @' WHERE rowid = 1", txt' –

+0

@Alok yes, я проверил его. Это не ноль. –

ответ

0

Не запускайте оба запроса вместе. сделайте два отдельных запроса один для добавления столбца и один для обновления таблицы. Поэтому запустите два разных оператора вместо одного.

+0

Создание двух разных запросов для меня. Спасибо за предложение. @Lion –

+0

Добро пожаловать .... :) – Lion