Я не могу получить строку из своего обработчика базы данных Java

#java #arrays #database

Вопрос:

  • Привет, я пытаюсь получить строку из своего обработчика базы данных. Я не получаю никаких ошибок, просто вместо строки я получаю такие идентификаторы. *

com.пример.время выпивки.Treburi.NumeBazaDeDate@752fc40

Пожалуйста, какая-нибудь помощь? Я новичок в программировании

  public void test(){
            ArrayList<String> a=new ArrayList<>();
            a.add("ana are mere");
            a.add("ana are mere");
            a.add("ana are mere");
                DataBaseHandler db=new DataBaseHandler(this);
                String y=db.getNume(2).toString();
                String z=a.get(0).replace("mere",y);
                intrebari.setText(z);
                Log.d("hi", "HI " y);
       }
 

и вот он обработчик базы данных

 public class DataBaseHandler extends SQLiteOpenHelper {
    private final Context context;

    public DataBaseHandler(@Nullable Context context) {
        super(context, Util.DATABASE_NAME, null, Util.DATABASE_VERSION);
        this.context = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_CONTACT_TABLE = "CREATE TABLE "   Util.TABLE_NAME   "("
                  Util.KEY_ID   " INTEGER PRIMARY KEY,"   Util.KEY_NAME   " TEXT"   ")";
        db.execSQL(CREATE_CONTACT_TABLE);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS "   Util.TABLE_NAME);

        //create a table again
        onCreate(db);
    }

    public void addName(NumeBazaDeDate numeBazaDeDate) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(Util.KEY_NAME, numeBazaDeDate.getNume());

        db.insert(Util.TABLE_NAME, null, values);
    }

    public NumeBazaDeDate getNume(int id) {
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.query(Util.TABLE_NAME, new String[]{Util.KEY_ID, Util.KEY_NAME},
                Util.KEY_ID   "=?", new String[]{String.valueOf(id)}, null, null, null);
        if (cursor != null)
            cursor.moveToFirst();
        NumeBazaDeDate numeBazaDeDate = new NumeBazaDeDate();
        numeBazaDeDate.setId(Integer.parseInt(cursor.getString(0)));
        numeBazaDeDate.setNume(cursor.getString(1));

        return numeBazaDeDate;
    }

}
 

Комментарии:

1. Попробуй String y=db.getNume(2).getNume();

2. это сработало, спасибо, ребята. Ты потрясающая. Да, это логика, я получаю полный объект, и после того, как мне нужно будет просто назвать его, да. Спасибо

Ответ №1:

В этой строке

 String y=db.getNume(2).toString();
 

Вы преобразуете свой объект в строку, вызывая метод toString. По умолчанию этот метод возвращает полное имя класса и адрес объекта, соединенные с @.

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

Скажем, если в NumeBazaDeDate есть поле name, и вы хотите, чтобы переменная y содержала имя формы db, вот как должен выглядеть метод toString

 public String toString() {
    return name;
}
 

Комментарии:

1. и как я должен сделать, чтобы я использовал ctrl o, чтобы получить его, но что я должен там написать?