SQLite выберите вопрос - PullRequest
       4

SQLite выберите вопрос

0 голосов
/ 30 октября 2011

Я написал метод, который должен возвращать строку с данными из запроса выбора, но он работает не совсем так, как мне хотелось бы, вот метод:

public String selectorDanych(String kolumna, String log){
String test = "Select "+ kolumna + " from "+ Usr_TABLE+ " where "+colLogin + " ='" +log+"';";
Cursor cursor2 = sqLiteDatabase.rawQuery(test, null);
return cursor2.toString();
}

он возвращает какую-то строку, но,это не то, что мне нужно [возвращаемая строка - что-то вроде «SQLite.database. @» и т. д.

Ответы [ 3 ]

1 голос
/ 30 октября 2011

Вы возвращаете внутреннее имя курсора, полученное из запроса, а не данные из результатов запроса.

Вы должны использовать что-то вроде:

cursor2.moveToFirst(); // position the cursor at the first returned row
String col = cursor2.getString(the_index_of_the_column_you_want);
cursor2.close();
return col;

Убедитесь, что вы проверяете на наличие ошибок (возможно, строки вообще не возвращаются) и читаете документы API Cursor.

0 голосов
/ 30 октября 2011

Вы можете использовать код ниже.Вы можете поймать исключение после блока try.Даже если вы этого не сделаете, вы гарантированно вызовете close () для курсора!Я также предлагаю всегда использовать английские имена для ваших переменных.

    public String selectorDanych(String kolumna, String log){
    String test = "Select "+ kolumna + " from "+ Usr_TABLE+ " where "+colLogin + " ='" +log+"';";
    Cursor cursor2 = sqLiteDatabase.rawQuery(test, null);

  if (cursor2 != null && cursor2.moveToFirst()) { 
      try { //use try - finally to close the cursor in the finally block
        int index_kolumna = cursor2.getColumnIndexOrThrow(kolumna);
        String kolumna_val = cursor2.getString(index_kolumna);  
      } finally { 
        if (cursor2 != null && !cursor2.isClosed()) {
        cursor2.close();
      }
   }

}

0 голосов
/ 30 октября 2011

Перепишите ваш код как

public String selectorDanych(String kolumna, String log){
    String test = "Select "+ kolumna + " from "+ Usr_TABLE+ " where "+colLogin + " ='" +log+"';";
    Cursor cursor2 = sqLiteDatabase.rawQuery(test, null);

//Write these codes
if(cursor2.moveToFirst()) {
   cursor2.close();             //You should close your cursor
   return cursor2.getString(0); //index of your kolumna field
} else {
   cursor2.close();             //You should close your cursor
   return null; //Return some error msg, to notify that data not found
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...