Обновить несколько столбцов с помощью activeAndroid

Я хочу обновить несколько ячеек одной строки с активным андроидом. что-то вроде этого,

    new Update(Question.class).set("UserAnswer ="+answerID,
                                    "UserAnswerType = "+userAnswerType)
                               .where("QID = ?", questionID).execute();

но это даст мне ошибку. есть ли другой способ сделать это? или я что-то упускаю?

Вот мой Question.class для справки

@Table(name = "Questions")
public class Question extends Model {
@Expose
@Column(name = "QID")
private Integer ID;

@Expose
@Column(name = "AnswerID")
private Integer AnswerID;

@Expose
@Column(name = "UserAnswer")
private Integer UserAnswer;

@Expose
@Column(name = "UserAnswerType")
private Integer UserAnswerType;

//Getter and setter methods for fields

public Question() {
    // You have to call super in each constructor to create the table.
    super();
}
}

person Nidhi    schedule 24.12.2015    source источник
comment
можешь вставить вопрос. учебный класс?   -  person EJW    schedule 24.12.2015
comment
@Erik-JanWestendorp, обновил мой вопрос для справки   -  person Nidhi    schedule 28.12.2015


Ответы (2)


Вы можете сделать что-то вроде ниже. Я сделал это в одном из моих проектов, и он работал нормально.

 String updateSet = " UserAnswer = ? ," +
                    " UserAnswerType = ? ";

 new Update(Question.class)
     .set(updateSet, answerID, userAnswerType)
     .where(" QID = ? ", questionID)
     .execute();

Следование аналогичному шаблону для любого количества столбцов будет работать. Если в вашей таблице есть поля типа Boolean, вам может помочь эта проблема.

person uniruddh    schedule 08.04.2016

Мы можем добиться этого таким образом.

            StringBuilder data=new StringBuilder();

            if (!TextUtils.isEmpty(name.getText().toString()))
            {
                data.append("Name = '"+name.getText().toString()+"',");
            }
            if (!TextUtils.isEmpty(age.getText().toString()))
            {
                data.append("Age = '"+age.getText().toString()+"',");
            }
            if (!TextUtils.isEmpty(empCode.getText().toString()))
            {
                data.append("EmployeeCode = '"+empCode.getText().toString()+"',");
            }
            if (!TextUtils.isEmpty(mobNum.getText().toString()))
            {
                data.append("MobileNumber = '"+mobNum.getText().toString()+"',");
            }
            if (!TextUtils.isEmpty(adress.getText().toString()))
            {
                data.append("address = '"+adress.getText().toString()+"'");
            }
            String str=data.toString();

    //-------------and update query like this-----------------

    new Update(EmpProfile.class).set(str).where("EmployeeCode = ?", empCode)
                    .execute();
person Amrit Chakradhari    schedule 29.12.2016