У меня проблема с моими кодами при обновлении данных. В классе обновления идентификатор является ошибкой, и я уже объявил его в классе DatabaseHelper, но это все еще была ошибка. Пожалуйста, проверьте мои коды.

My DatabaseHelper class:


   public boolean updateData(long id, String new_question, String new_ans1, String new_ans2, String new_ans3, String new_ans4, SQLiteDatabase sqLiteDatabase )
        {
        ContentValues contentValues = new ContentValues();

            contentValues.put(AdminContact.Question.COLUMN_QUESTION, new_question);
            contentValues.put(AdminContact.Question.COLUMN_ANSWER1, new_ans1);
            contentValues.put(AdminContact.Question.COLUMN_ANSWER2, new_ans2);
            contentValues.put(AdminContact.Question.COLUMN_ANSWER3, new_ans3);
            contentValues.put(AdminContact.Question.COLUMN_ANSWER4, new_ans4);

           // String selection = AdminContact.Question.TABLE_QUIZ + " LIKE ?";
            //String[] selection_arg = {new_question};
           int i = sqLiteDatabase.update(AdminContact.Question.TABLE_QUIZ, contentValues, AdminContact.Question.ID + "=" + id, null);
            return i > 0;

        }



    upgrade class:

     public void updateData(View view)
        {
        helper = new DatabaseHelper(this);
            sqLiteDatabase = helper.getWritableDatabase();

            String question, ans1, ans2, ans3, ans4;

            question = New_Question.getText().toString();
            ans1 = New_Ans1.getText().toString();
            ans2 = New_Ans2.getText().toString();
            ans3 = New_Ans3.getText().toString();
            ans4 = New_Ans4.getText().toString();
            helper.updateData(id,question,ans1,ans2,ans3,ans4,sqLiteDatabase);
            Toast.makeText(getApplicationContext()," Successfully Updated", Toast.LENGTH_LONG).show();
            finish();

        }

    }
1
Jun'z 6 Янв 2016 в 15:58

3 ответа

Лучший ответ

Глядя на ваш код, вы делаете одно обновление, тогда не думайте

String selection = AdminContact.Question.TABLE_QUIZ + " LIKE ?";`

Будет - лучший способ, вы должны использовать вместо этого идентификатор, я изменил код. Вы можете это проверить. и я также закомментировал часть кода

public int updateData(String new_question, String new_ans1, String new_ans2, String new_ans3, String new_ans4, SQLiteDatabase sqLiteDatabase ) {

ContentValues contentValues = new ContentValues();
contentValues.put(AdminContact.Question.COLUMN_QUESTION, new_question);
contentValues.put(AdminContact.Question.COLUMN_ANSWER1, new_ans1);
contentValues.put(AdminContact.Question.COLUMN_ANSWER2, new_ans2);
contentValues.put(AdminContact.Question.COLUMN_ANSWER3, new_ans3);
contentValues.put(AdminContact.Question.COLUMN_ANSWER4, new_ans4);

//  String selection = AdminContact.Question.TABLE_QUIZ + " LIKE ?";
//  String[] selection_arg = {new_question};

int count = sqLiteDatabase.update(AdminContact.Question.TABLE_QUIZ,   contentValues, KEY_ROWID + "=" + rowId, null);

return count;
}

Я добавил KEY_ROWID + "=" + rowId, где rowId - это идентификатор конкретного контента, который вы хотите обновить. вы также можете передать его через функцию

0
Muyide Ibukun 6 Янв 2016 в 13:40

Вы можете выполнить простой запрос в своей базе данных, используя язык запросов. Вот пример.

SQLiteDatabase db;
db.execSQL("create table if not exists "
                + "user"
                + "(_id integer primary key autoincrement, name text not null,  number text not null, "
                + "address text not null, status integer not null, date integer not null)");

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

0
Reaz Murshed 6 Янв 2016 в 13:19

Замените имя таблицы именем столбца в строке ниже в вашем коде

String selection = AdminContact.Question.TABLE_QUIZ + " LIKE ?";

Заменить

String selection = AdminContact.Question.COLUMN_QUESTION + " LIKE ?";
1
Meenal 6 Янв 2016 в 13:27