Dardila11
1/14/2019 - 2:47 PM

SQlite Database

  • Create DatabaseHelper class
  • Create Model class
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.support.annotation.Nullable;
import android.util.Log;


import java.util.ArrayList;
import java.util.List;


public class DatabaseHelper extends SQLiteOpenHelper {

    private static final int DATABASE_VERSION = 1;
    private static final String DATABASE_NAME = "my_db";


    public DatabaseHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, null, version);
    }

    public DatabaseHelper(Context context){
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("DROP TABLE IF EXISTS " + Producto.TABLE_NAME);
        db.execSQL(Producto.CREATE_TABLE);
        Log.d("TABLA CREADA", "Satisfactoriamente! ");
    }

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

    public void eliminarTabla(String nombre_tabla) {

        String selectQuery = "DELETE FROM " + nombre_tabla;
        SQLiteDatabase db= getWritableDatabase();
        db.execSQL(selectQuery);
    }

    public boolean insertarProducto(Producto producto) {
        SQLiteDatabase db = getWritableDatabase();
        ContentValues contentValues = new ContentValues();

        contentValues.put(Producto.COLUMN_ID, producto.getId());
        contentValues.put(Producto.COLUMN_CANTIDAD, producto.getCantidad());


        Log.d("DATABASE HELPER", "insertarProducto: Agregando "
                + producto.getId() + " a " + Producto.TABLE_NAME);

        long result = db.insert(Producto.TABLE_NAME, null, contentValues);

        if(result == -1){
            return actualizarProducto(producto) != 0;
        }
        return true;
    }

    public int getCantidadProductosEnDB() {
        String countQuery = "SELECT  * FROM " + Producto.TABLE_NAME;
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(countQuery, null);

        int count = cursor.getCount();
        cursor.close();

        return count;
    }

    public int actualizarProducto(Producto producto) {
        int resultado = 0;
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(Producto.COLUMN_CANTIDAD, producto.getCantidad());

        // updating row
        resultado = db.update(Producto.TABLE_NAME, values, Producto.COLUMN_ID + " = ?",
                new String[]{String.valueOf(producto.getId())});

        Log.d("ACTUALIZA PRODUCTO", "actualizarProducto: BUENO! ");
        return resultado;
    }

    public void eliminarProducto(Producto producto) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(Producto.TABLE_NAME, Producto.COLUMN_ID + " = ?",
                new String[]{String.valueOf(producto.getId())});
        db.close();
    }

    public int obtenerCantidadDeUnProducto(String id){
        int cantidad = 0;
        SQLiteDatabase db = getReadableDatabase();
        String[] params = new String[]{ id };
        String cantidadQuery = "SELECT " + Producto.COLUMN_CANTIDAD + " FROM " + Producto.TABLE_NAME + " WHERE " + Producto.COLUMN_ID + " = " + "?" ;
        Cursor cursor = db.rawQuery(cantidadQuery,params);

        if (cursor.moveToFirst()){
            while(!cursor.isAfterLast()){
                 cantidad = Integer.parseInt(cursor.getString(cursor.getColumnIndex(Producto.COLUMN_CANTIDAD)));
                cursor.moveToNext();
            }
        }
        cursor.close();
        return cantidad;
    }

    public List<Producto> obtenerTodosLosProductos() {
        List<Producto> productoList = new ArrayList<>();

        // Select All Query
        String selectQuery = "SELECT  * FROM " + Producto.TABLE_NAME + " ORDER BY " +
                Producto.COLUMN_ID + " DESC";

        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list
        if (cursor.moveToFirst()) {
            do {
                Producto producto = new Producto();

                producto.setId(cursor.getInt(cursor.getColumnIndex(Producto.COLUMN_ID)));
                producto.setCantidad(cursor.getInt(cursor.getColumnIndex(Producto.COLUMN_CANTIDAD)));

                productoList.add(producto);
            } while (cursor.moveToNext());
        }

        // close db connection
        db.close();

        // return notes list
        return productoList;
    }



}
public class Producto{
  
    // Add the folowing to our model class
    // Columns and CREATE_TABLE
    public static final String TABLE_NAME = "Products";
    public static final String COLUMN_ID = "id";
    public static final String COLUMN_NOMBRE = "name";
    public static final String COLUMN_IMAGEN = "image";
    public static final String COLUMN_DESC = "desc";
    public static final String COLUMN_CANTIDAD = "quantity";
    public static final String COLUMN_PRECIO = "price";
    
    // Create our table
    public static final String CREATE_TABLE =
            "CREATE TABLE " + TABLE_NAME + "("
                    + COLUMN_ID + " INTEGER PRIMARY KEY,"
                    + COLUMN_CANTIDAD + " INTEGER"
                    + ")";
}