#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, чтобы получить его, но что я должен там написать?