ошибка возникает при попытке выбрать в sqlite android - PullRequest
0 голосов
/ 27 марта 2019

, поэтому я недавно научился писать код в Android с использованием sqlite, и я пытаюсь выбрать данные из sqlite, но эта ошибка возникает

Я попробовал некоторые предложения из Интернета и прочитал мою книгу, но я не решил свою проблему

public Penyakit getPenyakit1(String namaGejal){
  SQLiteDatabase db = this.getReadableDatabase();
  String query = "SELECT idPen FROM " + TABLE_CONTACTS + " WHERE " + 
  namapen + " =\"" + namaGejal + "\"";
  Cursor cursor = db.rawQuery(query,null);
  Penyakit penyakit = new Penyakit();
  if(cursor.moveToFirst()){
    cursor.moveToFirst();
    penyakit.set_nomber(Integer.parseInt(cursor.getColumnName(0)));
    penyakit.set_namaPen(cursor.getColumnName(1));
    penyakit.set_idPenyakit(Integer.parseInt(cursor.getColumnName(2)));
    penyakit.set_namGej(cursor.getColumnName(3));
    penyakit.set_idGejala(Integer.parseInt(cursor.getColumnName(4)));
    cursor.close();
  } else {
    penyakit=null;
  }
  return penyakit;
}

это logcat

Process: com.example.lordbramasta.pakar, PID: 18914
java.lang.NumberFormatException: For input string: "idPen"
    at java.lang.Integer.parseInt(Integer.java:615)
    at java.lang.Integer.parseInt(Integer.java:650)
    at  com.example.lordbramasta.pakar.DBAdapter.getPenyakit1(DBAdapter.java:79)

я ожидал, что значение idPen будет выбрано, спасибо

Ответы [ 3 ]

1 голос
/ 27 марта 2019

Возможно, вам нужно использовать ' вместо ".Итак, измените запрос следующим образом:

String query = "SELECT idPen FROM " + TABLE_CONTACTS + " WHERE " + 
namapen + " =\'" + namaGejal + "\'";

Я предлагаю вам использовать SQLiteDatabase.query () вместо rawQuery, например:

// Define a projection that specifies which columns from the database
// you will actually use after this query.
String[] projection = {
    "idPen"
    };

// Filter results WHERE "namapen" = 'namaGejal'
String selection = "namapen" + " = ?";
String[] selectionArgs = { namaGejal };

// How you want the results sorted in the resulting Cursor
String sortOrder = null; // null for default order

Cursor cursor = db.query(
    TABLE_CONTACTS,         // The table to query
    projection,             // The array of columns to return (pass null to get all)
    selection,              // The columns for the WHERE clause
    selectionArgs,          // The values for the WHERE clause
    null,                   // don't group the rows
    null,                   // don't filter by row groups
    sortOrder               // The sort order
    );


  // do something with the cursor

Пожалуйста, посмотрите Считайте информацию из базы данных

1 голос
/ 27 марта 2019

Ваша проблема в этой строке:

penyakit.set_nomber(Integer.parseInt(cursor.getColumnName(0)));

cursor.getColumnName(0) возвращает idPen, так как это имя единственного столбца, возвращенного вашим запросом:

SELECT idPen FROM ....

и вашКод пытается преобразовать строку "idPen" в целое число.Так getColumnName () возвращает имя столбца по указанному индексу, а не значение столбца.Вам следует сделать

penyakit.set_nomber(Integer.parseInt(cursor.getString(0)));

или если тип данных столбца idPen равен INTEGER, тогда:

penyakit.set_nomber(cursor.getInt(0));

Также не пытайтесь получить какие-либо другие столбцы, потому что вашзапрос возвращает только 1. Примечание : удалить это cursor.moveToFirst(); внутри блока if, поскольку оно уже выполнено.

0 голосов
/ 27 марта 2019

Если вы хотите получить данные всех столбцов из вашего TABLE_CONTACTS, используйте SELECT * FROM

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