Метод для вывода данных в listView из локальной базы данных
Как правильно прописать запрос на вывод данных из базы данных SQLite? Создала класс унаследованный от SQLiteAssetHelper:
public class DatabaseOpenHelper extends SQLiteAssetHelper {
public static final String DATABASE_NAME="example.db";
private static final int DATABASE_VERSION = 1;
private static final String DB_TABLE = "group";
//constructor
public DatabaseOpenHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
} Далее класс для управления бд:
public class DatabaseAccess {
private SQLiteOpenHelper openHelper;
private SQLiteDatabase db;
private static DatabaseAccess instance;
Cursor c = null;
//private constructor so that object creation from outside the class is avoided
private DatabaseAccess(Context context)
{
this.openHelper = new DatabaseOpenHelper(context);
}
//to return the single instance of database
public static DatabaseAccess getInstance(Context context)
{
if(instance==null)
{
instance=new DatabaseAccess(context);
}
return instance;
}
//to open the Database
public void open()
{
this.db = openHelper.getWritableDatabase();
}
//closing the database connection
public void close()
{
if(db!=null)
{
this.db.close();
}
}
}
В классе DatabaseAccess я бы и хотела прописать метод для вывода данных в listView. Подскажите как правильно это реализовать? предыдущие попытки не увенчались успехом.
Ответы (1 шт):
Автор решения: Дмитрий Кононенко
→ Ссылка
Попробуйте создать класс для работы с бд наследуясь от SQLiteOpenHelper, вот пример
public class DataBaseHelper extends SQLiteOpenHelper {
static final int VERSION=1;
private static final String DATABASE_NAME="DataBase.db";
public DataBaseHelper(Context context){
super(context,DATABASE_NAME,null,VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table "+ Product.TABLE_NAME + " ("+
"_id integer primary key autoincrement, " +
Product.TITLE + ", "+
Product.CALROIE_PRODUCT+")");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + EatItem.TABLE_NAME);
onCreate(db);
}
} Чтобы написать запрос, нужно получить доступ к бд
SQLiteDatabase mDatabase=new
DataBaseHelper(mContext).getWritableDatabase()
и написать код запроса
public List<Product> getProductList(){
ArrayList<Product> productList=new ArrayList<>();
Cursor cursor =mDatabase.rawQuery("SELECT * from "+Product.TABLE_NAME,null);
if (cursor.moveToFirst()) {
do {
Product product=new Product();
product.setId(cursor.getString(0));
product.setTitle(cursor.getString(1));
product.setCalorieProduct(cursor.getString(2));
productList.add(product);
} while (cursor.moveToNext());
}
cursor.close();
return productList;
};
Вот так я получал из бд свои продукты) По поводу курсора советую почитать отдельно. Ну а в конце полученные данные просто передать в адапатер ListView