Alpha Code Labs | Video Tutoriales y Aplicaciones M&oacuteviles

Crear y usar base de datos sqlite en aplicación

Crear cadenas de texto

Archivo strings.xml

<resources>
    <string name="app_name">tutorial</string>
    <string name="action_settings">Settings</string>
    <string name="presionar_boton">Presione el botón para llenar la lista</string>
    <string name="llenar_lista">Llenar lista</string>
    <string name="titulo_nombre">NOMBRE</string>
    <string name="titulo_origen">ORIGEN</string>
    <string name="titulo_significado">SIGNIFICADO</string>
</resources>

 

Crear Layout utilizado en MainActivity.java

A continuación vamos a crear un LinearLayout con la estructura necesaria para nuestro ejemplo.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:app="http://schemas.android.com/apk/res-auto"
   
xmlns:tools="http://schemas.android.com/tools"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
android:orientation="vertical"
   
android:background="#F5F5F5"
   
android:paddingBottom="@dimen/activity_vertical_margin"
   
android:paddingLeft="@dimen/activity_horizontal_margin"
   
android:paddingRight="@dimen/activity_horizontal_margin"
   
android:paddingTop="@dimen/activity_vertical_margin"
   
app:layout_behavior="@string/appbar_scrolling_view_behavior"
   
tools:context="com.alphacodelabs.tutorial.MainActivity"
   
tools:showIn="@layout/activity_main">

    <TextView
       
android:id="@+id/tv_titulo_bd"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:text="@string/presionar_boton"
       
android:textSize="16sp"
       
android:typeface="sans"
       
android:gravity="center_horizontal"
       
android:textStyle="bold"/>

    <Button
       
android:id="@+id/tv_boton_llenar_lista"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:onClick="LlenarLista"
       
android:text="@string/llenar_lista"/>

    <LinearLayout
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:layout_marginTop="5dp">

        <TextView android:id="@+id/tv_nombre"
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content"
           
android:textStyle="bold"
           
android:text="@string/titulo_nombre"
           
android:gravity="center"
           
android:layout_weight="1">
        </TextView>

        <TextView android:id="@+id/tv_origen"
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content"
           
android:textStyle="bold"
           
android:text="@string/titulo_origen"
           
android:gravity="center"
           
android:layout_weight="1">
        </TextView>

        <TextView android:id="@+id/tv_significado"
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content"
           
android:textStyle="bold"
           
android:text="@string/titulo_significado"
           
android:gravity="center"
           
android:layout_weight="1">
        </TextView>
    </LinearLayout>


    <LinearLayout
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:layout_marginTop="5dp">

        <ListView android:id="@+id/lv_nombre"
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content"
           
android:layout_weight="1">
        </ListView>

        <ListView android:id="@+id/lv_origen"
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content"
            
android:layout_weight="1">
        </ListView>

        <ListView android:id="@+id/lv_significado"
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content"
           
android:layout_weight="1">
        </ListView>
    </LinearLayout>


</LinearLayout>

Utilizando base de datos Sqlite

A continuación las clases necesarias para cargar la base de datos.

MainActivity.java

public class MainActivity extends AppCompatActivity {

    public static Activity activity;
    ManejadorBaseDeDatos manejadorBD;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        activity = this;
        manejadorBD = ManejadorBaseDeDatos.instance();

        Cursor cursor = manejadorBD.select("SELECT * FROM SignificadoNombres ORDER BY Nombre ASC");

        while (cursor.moveToNext())

                ManejadorDeDatos.getInstance().SetearValores(
                        cursor.getString(cursor.getColumnIndex("Nombre")),
                        cursor.getString(cursor.getColumnIndex("Origen")),
                        cursor.getString(cursor.getColumnIndex("Significado")));

        cursor.close();

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

        setSupportActionBar(toolbar);


    }

    public void LlenarLista(View v) {
        final ArrayAdapter<String> nombresAdapter = new ArrayAdapter<>
                (this,android.R.layout.simple_list_item_1, ManejadorDeDatos.ObtenerListaNombres());

        ((ListView)findViewById(R.id.lv_nombre)).setAdapter(nombresAdapter);


        final ArrayAdapter<String> origenAdapter = new ArrayAdapter<>
                (this,android.R.layout.simple_list_item_1, ManejadorDeDatos.ObtenerListaOrigenes());

        ((ListView)findViewById(R.id.lv_origen)).setAdapter(origenAdapter);

        final ArrayAdapter<String> significadoAdapter = new ArrayAdapter<>
                (this,android.R.layout.simple_list_item_1, ManejadorDeDatos.ObtenerListaSignificados());

        ((ListView)findViewById(R.id.lv_significado)).setAdapter(significadoAdapter);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
       
int id = item.getItemId();

        //noinspection SimplifiableIfStatement
       
if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }


}


ManejadorBaseDeDatos.java

public class ManejadorBaseDeDatos extends SQLiteOpenHelper {


    private static String DB_PATH = "/data/data/com.alphacodelabs.tutorial/databases/";
    private static String DB_NAME = "SignificadoNombres.db";
 
    private static SQLiteDatabase mDataBase;
 
    private static ManejadorBaseDeDatos sInstance = null;

    private static final int DATABASE_VERSION = 1;
 

    public ManejadorBaseDeDatos() {
        super(MainActivity.activity, DB_NAME, null, DATABASE_VERSION);
 
        try {
           createDataBase();
            openDataBase();
        } catch (IOException e) {
            e.printStackTrace();
        }
 
    }
 

    public static ManejadorBaseDeDatos instance() {
 
        if (sInstance == null) {
            sInstance = new ManejadorBaseDeDatos();
        }
        return sInstance;
    }
 

    private void createDataBase() throws IOException {
 
        boolean dbExist = checkDataBase();
        SQLiteDatabase db_Read = null;

        if (dbExist) {
            // la base de datos ya existe
       
} else {

           db_Read = this.getReadableDatabase();
           db_Read.close();
 
            try {
 
                copyDataBase();
 
            } catch (IOException e) {
 
                throw new Error("Error copiando base de datos");
            }
        }
    }

    public boolean checkDataBase()
    {
        File dbFile = new File(DB_PATH + DB_NAME);
        return dbFile.exists();
    }

    public void copyDataBase() throws IOException {
 
        InputStream myInput = MainActivity.activity.getAssets().open(DB_NAME);

        String outFileName = DB_PATH + DB_NAME;
 
        OutputStream myOutput = new FileOutputStream(outFileName);
 
        byte[] buffer = new byte[1024];
        int length;
        while ((length = myInput.read(buffer)) > 0) {
            myOutput.write(buffer, 0, length);
        }
 
        myOutput.flush();
        myOutput.close();
        myInput.close();
 
    }
 
    private void openDataBase() throws SQLException {

        String myPath = DB_PATH + DB_NAME;
        mDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
    }


    public Cursor select(String query) throws SQLException {
        return mDataBase.rawQuery(query, null);
    }



    @Override
    public synchronized void close() {

        if (mDataBase != null)
            mDataBase.close();

        super.close();

    }
 
    @Override
    public void onCreate(SQLiteDatabase db) {
 
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 
    }
 

  
  
}

 

 

ManejadorDeDatos.java

package com.alphacodelabs.tutorial;

import java.util.ArrayList;

public class ManejadorDeDatos extends Object{
  
   public static ArrayList<String> nombre = new ArrayList<String>();
   public static ArrayList<String> origen = new ArrayList<String>();
   public static ArrayList<String> significado = new ArrayList<String>();

   private static final ManejadorDeDatos INSTANCE = new ManejadorDeDatos();

   //====================================================
   // CONSTRUCTOR
   //====================================================

  
public ManejadorDeDatos() {
   }

   //====================================================
   // GETTERS & SETTERS
   //====================================================
  
public static ManejadorDeDatos getInstance(){
      return INSTANCE;
   }

   public static ArrayList<String> ObtenerListaNombres() {
      return nombre;
   }

   public static ArrayList<String> ObtenerListaOrigenes() {
      return origen;
   }

   public static ArrayList<String> ObtenerListaSignificados() {
      return significado;
   }

   public void SetearValores(String mNombre,String mOrigen,String mSignificado) {
      nombre.add(mNombre);
      origen.add(mOrigen);
      significado.add(mSignificado);
   }


}

 

Aquí te dejamos el video tutorial de Crear y usar base de datos sqlite en aplicación.