#android #sqlite #cursor
#Android #sqlite #курсор
Вопрос:
У меня есть приложение, которое вставляет данные в базу данных с 2 таблицами (project и alvara) Метод вставки для второй таблицы зависит от того, какой тип получает первая таблица. (1 или 2) для возобновления идеи.
Это метод, который я создал для просмотра второй таблицы с помощью курсора. Если он находит, он устанавливает параметры из класса alvara_db. И позже я использую методы получения для отображения информации о textviews в другом действии. Проблема в том, что это вообще не информация о настройке. Что-то не так с моим курсором?
Заранее спасибо!
public ArrayList<alvara_db> getAlvaras(){
SQLiteDatabase db = this.getReadableDatabase();
ArrayList<alvara_db> projects = new ArrayList<>();
String[] project = new String[]{String.valueOf(tipoprojetoid)};
Cursor cur = db.rawQuery("SELECT placa, proj_exec, resp_tec, rtnum, parecer FROM alvara WHERE projetoid = ?", project);
cur.moveToFirst();
alvara_db alvaras = new alvara_db();
alvaras.setPlaca(cur.getInt(cur.getColumnIndex("placa")));
alvaras.setProj_exec(cur.getInt(cur.getColumnIndex("proj_exec")));
alvaras.setResp_tec(cur.getString(cur.getColumnIndex("resp_tec")));
alvaras.setRtnum(cur.getInt(cur.getColumnIndex("rtnum")));
alvaras.setParecer(cur.getString(cur.getColumnIndex("parecer")));
projects.add(alvaras);
return projects;
}
Фрагмент, где я вызываю метод getAlvaras:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.detalhes_projeto_alvara);
db.getAlvaras();
placa = alvaras.getPlaca();
resp_tec = alvaras.getResp_tec();
proj_exec = alvaras.getProj_exec();
rtnum = alvaras.getRtnum();
}
Ответ №1:
Вы не используете возвращаемое значение из db.getAlvaras()
.
Вместо этого alvaras
переменная во втором фрагменте является чем-то, что, скорее всего, не инициализировано — опубликованный вами код не показывает этого точно.
(Кроме того, вы можете захотеть проверить возвращаемое значение moveToFirst()
на случай, если запрос не соответствует ни одной строке, и добавить do
— while
цикл для извлечения более одной строки.)
Комментарии:
1. @Iaalto 1- Да. Я это знаю. Я думал, что, просто установив информацию, полученную из базы данных, я мог бы получить ее в textviews. 2- Он инициализируется непосредственно перед onCreate. Извините, что не опубликовал это. 3- Я думаю, что в этом не будет необходимости, потому что он всегда будет возвращать только одну строку.
2. @Iaalto Могу ли я получить некоторую информацию о том, как использовать возвращаемое значение?
3.
ArrayList<alvara_db> alvarasList = db.getAlvaras();
4. Я планирую поместить возвращаемые значения столбцов в предопределенную компоновку. Есть ли какой-либо способ сделать это с этим arraylist? возможно, используя ArrayAdapter?