Поиск значения ключа / пары застревает на «активности» после нажатия кнопки «Сохранить». - PullRequest
0 голосов
/ 18 апреля 2019

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

Код курса -------------------- Название курса

Машиностроение101 ...................... Основы физики

Математика101 ................................. Основы исчисления

........... и т. Д.

Я хочу получить значение Название курса позволяет произнести описание "Основы физики" после ввода Код курса Engineering101 в поле для редактирования текста.

Мой файл разрывается здесь:

public void saveData(View view) {
        EditText courseCodeName, courseCodeNumber;
        courseCodeName = findViewById(R.id.course_code);
        courseCodeNumber=findViewById(R.id.course_number);
        //get course name based off of coursenumber. make sure course name field blank
        if(courseCodeName.toString()=="" |courseCodeNumber.toString()!=""){
            // get codename and course name columns
            Cursor c = db.rawQuery("SELECT _id, course_name1, course_code1 FROM contacts WHERE course_code1 like '"+courseCodeNumber+"'",
                    null);
            if(c!=null){
                if(c.moveToFirst()){
                    do{
                        final String[] courseName=c.getColumnNames();// <---BREAKS HERE
                        String m = courseName[0];
                        //String course_name=c.getString(c.getColumnNames(dBContract.MenuEntry.COLUMN_CODE));
                        Log.v("Set Correctly?", m);

                    }while(c.moveToNext());
                }
            }

Что является причиной этого?Он просто говорит «Бег активности» и все.

Спасибо.

1 Ответ

0 голосов
/ 18 апреля 2019

Читая комментарий выше if (...)

//get course name based off of coursenumber. make sure course name field blank

Я думаю, что это должно быть:

if(courseCodeName.getText().toString().trim().isEmpty() && !courseCodeNumber.getText().toString().trim().isEmpty())

Затем используйте безопасный способ запроса таблицы, чтобы избежать внедрения SQLс помощью заполнителей:

Cursor c = db.rawQuery("SELECT course_name1 FROM contacts WHERE course_code1 = ?", new String[] {courseCodeNumber});

Я изменил инструкцию так, чтобы она возвращала только course_name1, поскольку вы не заинтересованы в других столбцах, а также изменил like на =.Тогда я не знаю, действительно ли вам нужна петля.Ожидаете ли вы более 1 строк?Я так не думаю, потому что полагаю, что course_code1 уникален (или нет?).Так что сделайте это:

if(c.moveToFirst()){
    String course_name = c.getString(0);
    ..................................
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...