jueves, 11 de agosto de 2016

004 Android studio y SQLite. Insertar y consultar

Practica004: Android(SQLITE: Insertar y consultar   )
Ing. Honoria Reyes Macedo


1.- Partiendo de la pantalla de captura:
fragment_tipodoc.xml   ó      fragment_producto.xml





<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
android:orientation="vertical" android:layout_width="match_parent"
   
android:layout_height="match_parent">
    <
TextView
       
style="@style/labels"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:text="@string/textVClaveDoc"
       
android:ems="20"
       
android:id="@+id/textView2" />

    <
EditText
       
style="@style/edits"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:id="@+id/editTCveDoc"
       
android:ems="20"
       
android:layout_gravity="center_horizontal"
       
android:hint="@string/editTCveDoc" />

    <
TextView
       
style="@style/labels"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:text="@string/textVTipoDoc"
       
android:ems="20"
       
android:id="@+id/textView3" />

    <
EditText
       
style="@style/edits"
       
android:layout_width="match_parent"
        
android:layout_height="wrap_content"
       
android:ems="20"
       
android:id="@+id/editTDesc"
       
android:hint="@string/editTTipoDoc" />

    <
CheckBox
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
        
android:text="@string/c_txtestatus"
       
android:id="@+id/c_txtestatus"
       
android:layout_gravity="center_horizontal"
       
android:checked="false" />

    <
Button
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:text="@string/btnGuardaTipoD"
       
android:id="@+id/IdGuardarTipo"
       
android:layout_gravity="center_horizontal" />

</
LinearLayout>
 

2.-  fragment_tipodoc.xml debera tener su respectiva clase  TipoDocFragment.java

ó


  fragment_producto.xml   debera tener su respectiva clase   ProductoFragment.java




import android.content.Context; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View;
 import android.view.ViewGroup;

public class TipoDocFragment extends Fragment   {
    public TipoDocFragment () {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
       return inflater.inflate(R.layout.fragment_tipodoc, container, false);
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
    }
}
 

3.-  Crear la clase  DBhelper.java


import android.content.Context;
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper;
public class DBhelper extends SQLiteOpenHelper  {
    TipoDocVo campohelp = new TipoDocVo();
    static final String DB_NAME = "GestionDocs.db";
    static final int DB_VERSION = 1;
    private  final String CREATE_TABLE = "create table if not exists "
            + campohelp.getTabla() + "(" + campohelp.getCampos() + " );";
    public DBhelper(Context context) {
        super(context, DB_NAME, null,DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_TABLE);
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + campohelp.getTabla());
        onCreate(db);
    }
}
 
 
4.- Crear la clase TipoDocVo.java
public class TipoDocVo {     int cveDocumento;     String descripcion;     boolean estatus;     private String campos;     private String tabla;     public String getTabla(){         this.tabla="documento";         return tabla;     }     public String getCampos(){         this.campos= "cveDocumento Integer primary key, " +                 "descripcion Text, " +                 "estatus Integer ";         return campos;     }     public int getCveDocumento() {         return cveDocumento;     }     public void setCveDocumento(int cveDocumento) {         this.cveDocumento = cveDocumento;     }     public String getDescripcion() {         return descripcion;     }     public void setDescripcion(String descripcion) {         this.descripcion = descripcion;     }     public boolean isEstatus() {         return estatus;     }     public void setEstatus(boolean estatus) {        this.estatus = estatus;     } }

 
5.- Crear la clase  DocumentoDAO.java


import android.content.ContentValues; 
import android.content.Context;import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.util.Log;import java.sql.SQLException;

public class DocumentoDAO {
        private Context ourcontext;
        private SQLiteDatabase database;
        private DBhelper dbhelper;
        public DocumentoDAO(){

        }

    public DocumentoDAO(Context c){
        ourcontext= c;
    }

    public DocumentoDAO abrirBD()throws SQLException{
            dbhelper= new DBhelper(ourcontext);
            database = dbhelper.getWritableDatabase();
            return this;
        }

        public void cerrarBD(){
            dbhelper.close();
        }

 
     public long insertarTipoDoc(TipoDocVo tipoDoc)throws SQLException{
        int sts=0;
        ContentValues registro = new ContentValues();
        long  result=1;
        registro.put("cveDocumento", tipoDoc.getCveDocumento());
        registro.put("descripcion", tipoDoc.getDescripcion());
        if(tipoDoc.isEstatus()) {
            sts=1;
        }
        registro.put("estatus", sts);
        result = database.insert(tipoDoc.getTabla(),null,registro);
        Log.d("El valor de result=", String.valueOf(result));
        return result;
     } 
 
     public String[] consultar()throws SQLException {
        dbhelper= new DBhelper(ourcontext);
        database = dbhelper.getReadableDatabase();
        String arregloEnviar[]= new String[0];
        if (database != null) {
            String qry= "select cveDocumento, descripcion, estatus " +
                    " from  documento ";

            Cursor c = database.rawQuery(qry, null);
            int i = 0;
            int cantidad = c.getCount();
            int ncolumns=c.getColumnCount();
            arregloEnviar = new String[cantidad];
            if (c.moveToFirst()) {
                Log.d("MyApp", "Si encontro Datos...................... ");
                do {
                    String Linea="";
                    for(int j=0; j<ncolumns; j++){
                        int tipo =c.getType(j);
                        switch (tipo){
                            case 3: Linea =Linea + c.getString(j) + " "; break;
                            case 1: Linea =Linea + c.getInt(j) + " ";  break;
                            case 2: Linea =Linea + c.getFloat(j) + " "; break;
                            case 4: Linea =Linea + c.getBlob(j) + " "; break;
                            case 0: Log.d("00:",c.getColumnName(j)); break;
                            default: Linea =Linea + c.getString(j) + " "; break;
                        }
                    }
                    arregloEnviar[i] = Linea;
                    i++;
                } while (c.moveToNext());
            }
        }
        return arregloEnviar;
    }
}
 




6.-  Agregar el codigo en rojo al archivo TipoDocFragment.java:



import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;

public class TipoDocFragment extends Fragment   {
    TipoDocVo TipoDoc_Datos;
    DocumentoDAO datosBD;
    private EditText etCveDoc, etDesc, etStatus;
    private CheckBox etest;
    private Button btnGuarda;

   
public TipoDocFragment () {               }

   
@Override
   
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        //return inflater.inflate(R.layout.fragment_tipodoc, container, false);
        View view= inflater.inflate(R.layout.fragment_tipodoc, container, false);
        TipoDoc_Datos= new TipoDocVo();
        datosBD = new DocumentoDAO(view.getContext());
        btnGuarda=(Button) view.findViewById(R.id.IdGuardarTipo);
        etCveDoc =(EditText) view.findViewById(R.id.editTCveDoc);
        etDesc =(EditText) view.findViewById(R.id.editTDesc);
        etest =(CheckBox) view.findViewById(R.id.c_txtestatus);


        btnGuarda.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    preparaDatos();
                    datosBD.abrirBD();
                    Log.d("MyApp", "Abrio la base......................... ");
                    datosBD.insertarTipoDoc(TipoDoc_Datos);
                    Log.d("MyApp", "Inserto en la base......................... ");
                }catch (Exception e ){
                    Log.d("MyApp", "Error:......................... " + e.getMessage());
                }
            }
        });

        return view;

    }

   
@Override
   
public void onActivityCreated(Bundle savedInstanceState) {
       
super.onActivityCreated(savedInstanceState);
    }

    public  void preparaDatos(){
        TipoDoc_Datos.setCveDocumento(Integer.valueOf(etCveDoc.getText().toString()));
        TipoDoc_Datos.setDescripcion(etDesc.getText().toString());
        TipoDoc_Datos.setEstatus(etest.isChecked());
        Log.d("MyApp", "Preparo los datos........................ " + etest.isChecked() );
    }

}


Nota: Observa que desde la clase TipoDocFragment.java se realizan los movimientos para insertar:
 
-    - Se necesito una clase tipo VO con sus get y set para almacenar los datos:    
           TipoDocVo.java

-    - Se necesito una clase tipo DAO para hacer los movimientos de inserción a la base de datos SQLite:       DocumentoDAO.java

     Desde esta clase se llama al metodo   dbhelper.java   el cual hereda de     
     SQLiteOpenHelper que hace posible la conexión a la base de datos
  
-    -Se necesito un objeto tipo View porque los datos los enviamos desde un fragment. Cuando los enviamos desde un activity no se necesita el View

    View view= inflater.inflate(R.layout.fragment_tipodoc, container, false);

-    - Se uso el  metodo onCreateView para ejecutar el movimiento de insertar. Cuando los enviamos desde un activity se usa el metodo   onCreate


ooooooooooooooooooooooooooo  ooooooooooooooooooooooooo  oooooooo
ooooooooooooooooooooooooooo  ooooooooooooooooooooooooo ooooooooo

No hay comentarios.:

Publicar un comentario