Показать синтаксическую ошибку рядом с «set» в базе данных

#android #database #sqlite #android-sqlite

#Android #База данных #sqlite #android-sqlite

Вопрос:

Следующая строка показала мне ошибку как ошибку sytax рядом с «SET»

          db.update( TABLE_SECOND_NAME,cv, " SET "   COL_SECOND_2   "= ( CONCAT 
              "  (COL_SECOND_3  ", "  name)  "'ROLL=?",new String[]{roll});
  

Я хочу сохранить как старые, так и новые значения во время обновления.Первое значение, которое уже сохранено, и новое, которое сейчас обновляется.
журнал как:

        09-29 14:20:37.021 27122-27122/com.example.prince.studentrecord
       E/ViewRootImpl: sendUserActionEvent() mView == null     
      09-29 14:20:37.581 27122-27122/com.example.prince.studentrecord 
       ViewPostImeInputStage ACTION_DOWN  
      09-29 14:20:38.941 27122-27122/com.example.prince.studentrecord 
          D/ViewRootImpl: 
      09-29 14:20:39.231 27122-27122/com.example.prince.studentrecord 
       E/ViewRootImpl: sendUserActionEvent() mView == null
      09-29 14:20:42.061 27122-27122/com.example.prince.studentrecord   

   09-29 14:20:42.161 27122-27122/com.example.prince.studentrecord   
      E/SQLiteLog: (1) near "SET": syntax error
  

Комментарии:

1. обновление int (String table, значения ContentValues, строка whereeclause, строка [] WHEREARARGS) … основной вопрос sql: можем ли мы использовать «SET» в where ?

2. … и нет, вы не можете использовать SQLiteDatabase.update для обновления столбца значением из другого столбца

3. То, что вы сделали, это смешали execSQL() синтаксис (обычная команда SQL) с update() методом, который переопределяет обычную команду обновления SQL.

Ответ №1:

Используйте этот метод для обновления таблицы базы данных sqlite :

public int updateContact(Контактный контакт) {
SQLiteDatabase db = this.getWritableDatabase();

     ContentValues values = new ContentValues();  
    values.put(KEY_NAME, contact.getName());  
    values.put(KEY_PH_NO, contact.getPhoneNumber());  

    // updating row  
    return db.update(TABLE_CONTACTS, values, KEY_ID   " = ?",  
            new String[] { String.valueOf(contact.getID()) });  
}  
  

Комментарии:

1. Я написал все правильно как: public boolean updateData_Second(строка roll, имя строки, отец строки, продолжение строки, строка cls,дата рождения строки) { SQLiteDatabase db=this.getWritableDatabase(); ContentValues cv=new ContentValues(); cv.put(COL_SECOND_1,roll); cv.put(COL_SECOND_2,имя); cv.put(COL_SECOND_3, отец); cv.put(COL_SECOND_4,продолжение); cv.put(COL_SECOND_5, cls); cv.put(COL_SECOND_6,дата рождения); db.update(TABLE_SECOND_NAME,cv, «ROLL= ?»,новая строка[]{roll}); возвращает true;

2. Удалите » перед БРОСКОМ и поместите после БРОСКА, а затем поместите»

3. db.update(TABLE_SECOND_NAME, cv, ROLL «= ?»,новая строка []{roll}), как это @siraliza

4. Чтобы обновить запись, она работает … но я хочу сохранить старое значение до обновления и новое после обновления с помощью функции concat ….. смотрите вопрос подробно

5. Чем вам нужно добавлять в базу данных, а не обновлять базу данных.