Добрый день подскажите как работать с 2 таблицами? и когда нужно открывать и закрывать базу данных. Нашел пример в интернете сделал как нужно мне:
public class DBHelper extends SQLiteOpenHelper {
public static final int DATABASE_VERSION=1;
public static final String DATABASE_NAME="fitnes";
public static final String TABLE_CONTACTS="food";
public static final String TABLE_CONTACTS_2="time";
public static final String KEY_ID="_id";//ид
public static final String KEY_NAME="name";//название (гречка, молоко, мясо)
public static final String KEY_SQUIRRELS ="Squirrels";//кол-во белка
public static final String KEY_FAT ="Fat";//кол-во жиров
public static final String KEY_CARBOHYDRATES ="Carbohydrates";//кол-во углеводы
public static final String KEY_CALORIES ="Calories";//кол_во калорий
public static final String KEY_TIME="time";//ид
public static final String KEY_TYPE="typeFood";//ид
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table " + TABLE_CONTACTS + "(" + KEY_ID + " integer primary key," + KEY_NAME + " text," + KEY_SQUIRRELS + " integer," + KEY_FAT + " integer," + KEY_CARBOHYDRATES + " integer," + KEY_CALORIES + " integer" + ")");//Если таблицы не существует то мы ее создаем
db.execSQL("create table " + TABLE_CONTACTS_2 + "(" + KEY_ID + " integer primary key," + KEY_TIME + " numeric," + KEY_TYPE + " text" + ")");//Если таблицы не существует то мы ее создаем
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists " + TABLE_CONTACTS);
db.execSQL("drop table if exists " + TABLE_CONTACTS_2);
onCreate(db);//а тут обновляем таблицу
}
}
Теперь добавляю данные в таблицу:
public void onClick(View v) {
// SQLiteDatabase database = dbHelper.getWritableDatabase();//нужен для управления
//ContentValues contentValues = new ContentValues();//нужен для добавления новых строк в таблицу выглядит как массив с именами столбцов и тд
EditText NAME = (EditText) view.findViewById(R.id.edNamePro);
EditText SQUIRRELS = (EditText) view.findViewById(R.id.edSQ);
EditText FAT = (EditText) view.findViewById(R.id.edFA);
EditText CARBOHYDRATES = (EditText) view.findViewById(R.id.edCAB);
EditText CALORIES = (EditText) view.findViewById(R.id.edCAL);
contentValues.put(DBHelper.KEY_NAME, NAME.getText().toString());
contentValues.put(DBHelper.KEY_SQUIRRELS, SQUIRRELS.getText().toString());
contentValues.put(DBHelper.KEY_FAT, FAT.getText().toString());
contentValues.put(DBHelper.KEY_CARBOHYDRATES, CARBOHYDRATES.getText().toString());
contentValues.put(DBHelper.KEY_CALORIES, CALORIES.getText().toString());
database.insert(DBHelper.TABLE_CONTACTS, null, contentValues);
dbHelper.close();//отключаемся от бд
dlg.dismiss();
}
И как я понял так я добавляю в другую :
for (int i = 0; i < allEds.size(); i++) {//сохраняем все позициии
EditText time = (EditText) allEds.get(i).findViewById(R.id.ed_time);//берем время
EditText type_food = (EditText) allEds.get(i).findViewById(R.id.buffer_food_select);//берем текст который хранится в буффере который скрыт от глаз
/*buffer_text = buffer_text + "-" + time.getText().toString();
buffer_text_food = buffer_text_food + "+" + type_food.getText().toString() + "/";*/
contentValues.put(DBHelper.KEY_TIME, time.getText().toString());
contentValues.put(DBHelper.KEY_TYPE, type_food.getText().toString());
}
Теперь пытаюсь считать данные, но ничего не происходит:
Cursor cursor = database.query(DBHelper.TABLE_CONTACTS, null, null, null,
null, null, null);// ТУТ ПРОИСХОДИТ СОРТИРОВКА В ДАЛЬНЕЙШЕМ ПРИГОДИТСЯ ЗАПОМНИ
if (cursor.moveToFirst()) {
int idindex = cursor.getColumnIndex(DBHelper.KEY_ID);
int nameindex = cursor.getColumnIndex(DBHelper.KEY_NAME);
int proteindex = cursor.getColumnIndex(DBHelper.KEY_SQUIRRELS);
int jirindex = cursor.getColumnIndex(DBHelper.KEY_FAT);
int ygliindex = cursor.getColumnIndex(DBHelper.KEY_CARBOHYDRATES);
int calorindex = cursor.getColumnIndex(DBHelper.KEY_CALORIES);
do {
Log.d("mLOg ", "ID=" + cursor.getInt(idindex) +
"NAME= " + cursor.getString(nameindex) +
"Белок= " + cursor.getInt(proteindex) +
"JIR= " + cursor.getInt(jirindex) +
"YGLI= " + cursor.getInt(ygliindex) +
"CALOR= " + cursor.getInt(calorindex));
} while (cursor.moveToNext());
}
Подскажите что я сделал не так, почему данные не считываются по нажатию и как правильно работать с 2 таблицами. Если можно небольшой приме, заранее спасибо
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как рисовать на такой конструкции без заголовка и рамки
Есть ли в Java аналоги конструкциям - генераторам как в Python, позволяющие быстро создавать/заполнять массив? Например, mass = [x for x in range(10)] Можно...