2013-09-04 4 views
5

Я хочу, чтобы обновить столбец col_Item_Auto_ID с +1 в каждой колонкеIncrement в Android SQLite

Как это: заменить 10 с 11, 11 с 12, и т.д !! Помогите мне пожалуйста ... вот код,

public void updateMiddleTemp(int autoid) { 

     SQLiteDatabase db = this.getWritableDatabase(); 
     int id=51; 


     ContentValues cv_temp1 = new ContentValues(); 
     cv_temp1.put(col_Item_Auto_ID, col_Item_Auto_ID+1); 
     //ff 

     long stemp = db.updateWithOnConflict(Table_KOT_ITEMS_TEMP, cv_temp1, 
       col_Item_Auto_ID + " >= " + autoid, null,SQLiteDatabase.CONFLICT_IGNORE); 
    db.close(); 
    } 
+0

Какие проблемы вы столкнулись? Вы получили сообщение об ошибке? –

+0

значение не обновляется .. –

ответ

11

Попробуйте этот код, он отлично работает :

db.execSQL("UPDATE " + Table_KOT_ITEMS_TEMP + " SET " 
        + col_Sl_No + " = " + col_Sl_No + " +1 WHERE " 
        + col_Sl_No + " >" +into); 
db.close(); 
5

Вы не можете сделать это с помощью стандартного метода update - вам нужно использовать метод execSql вместо:

String sql = "UPDATE " + Table_KOT_ITEMS_TEMP + 
      " SET " + col_Item_Auto_ID + "=" + col_ITEM_AUTO_ID + "+1" + 
      " WHERE " + col_ItemAutoID + " >= " + autoid; 

db.execSql(sql); 
+0

не могли бы вы мне сослаться на что-то? –

+0

Хмм .... Документация для execSql говорит довольно ясно, чтобы не использовать ее для Updates - вы уверены, что это единственный способ сделать это? – andygeers

+0

@andygeers Я знаю, что это так, но в то же время андроид не предоставляет никаких других методов для обновления строк с использованием значений из строк, поэтому да, это единственный способ. –

0

Это можно сделать с помощью updateWithOnConflict().

Неверное значение для поля значений в ContentValues. Результирующее значение должно быть «col_Item_Auto_ID + 1», а не «col_Item_Auto_ID1». Так попробуйте изменить

cv_temp1.put(col_Item_Auto_ID, col_Item_Auto_ID+1); 

в

cv_temp1.put(col_Item_Auto_ID, col_Item_Auto_ID+"+1"); 
+1

Это не работает – Galya

+0

не работает для меня ни –

0

Этот код работал для меня:

String query = "UPDATE " + Constants.RecentChats.DB_RECENT_CHATS + " SET " 
         + Constants.RecentChats.UNREAD_COUNT + " = " 
         + Constants.RecentChats.UNREAD_COUNT +"+1"+ " WHERE " 
         + Constants.RecentChats.JID + " =" + id; 

db.execSQL(query);