SlideShare a Scribd company logo
1 of 9
Download to read offline
Proyecto integrador para SQLite y Android
Realice una app en Android con las siguientes características:
• Debe tener las facilidades de consultar, insertar, eliminar y modificar de
SQLite, en una base de datos llamada AlumnosDB.
• La app debe capturar la pantalla de un proceso de alumnos que contiene
Matrícula, Nombre, Apellidos, y Carrera en una tabla llamada Alumnos.
• La carrera debe ser seleccionada de una lista por lo que debes utilizar el
componente adecuado para generarla.
• La app debe contar con una tabla llamada estadistica que contabilice la
cantidad de estudiantes por carrera por medio de triggers;
• Cada vez que un estudiante es agregado debe incrementarse el contador por
carrera, de igual forma, cuando un estudiante es eliminado debe reducirse el
contador de la carrera correspondiente. Asimismo, si un estudiante es
cambiado de carrera debe restar de la carrera anterior y sumar a la carrera
actual.
• También debe contar con un segundo activity, el cual contendrá un reporte
por carrera indicando cuantos estudiantes hay activos en cada una de las
mismas y pueda generar un archivo de texto con el contenido de la tabla.
• Debes cuidar que cuando se pretenda modificar o eliminar un dato que no
exista enviar a pantalla el mensaje apropiado.
Ejemplo de pantallas a utilizar
Programa principal
package com.example.trigger;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.database.sqlite.SQLiteDatabase;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import android.widget.Spinner;
import android.content.Intent;
import android.widget.ArrayAdapter;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Spinner sp = (Spinner)findViewById(R.id.carrera);
String []carreras = {"IIA","IIND","IGE","ISC","IMEC","IIAS"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, carreras);
sp.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void bMat(View v) {
EditText mat = (EditText)findViewById(R.id.mat);
EditText nom = (EditText)findViewById(R.id.nom);
EditText ape = (EditText)findViewById(R.id.ape);
Spinner sp = (Spinner)findViewById(R.id.carrera);
alumSqlHelp dbHelper = new alumSqlHelp (getBaseContext());
SQLiteDatabase dbl = dbHelper.getReadableDatabase();
String[] datos = new String[] {null,null,null,null};
String id= mat.getText().toString();
if (id.trim().length()<=0) {
Toast.makeText(getBaseContext(), "Debe capturar Matricula",
Toast.LENGTH_LONG).show();
return;
}
datos = dbHelper.leer(dbl,id);
if (datos[0]!=null) {
nom.setText(datos[1]);
ape.setText(datos[2]);
int pos=0;
for (pos=0; pos<sp.getCount(); pos++) {
if (datos[3].trim().equals(
sp.getItemAtPosition(pos).toString()))
break;
}
sp.setSelection(pos);
} else {
nom.setText("");
ape.setText("");
sp.setSelection(0);
Toast.makeText(getBaseContext(), "Dato no encontrado",
Toast.LENGTH_LONG).show();
}
}
public void gMat(View v) {
EditText mat = (EditText)findViewById(R.id.mat);
EditText nom = (EditText)findViewById(R.id.nom);
EditText ape = (EditText)findViewById(R.id.ape);
alumSqlHelp dbHelper = new alumSqlHelp (getBaseContext());
SQLiteDatabase dbl = dbHelper.getReadableDatabase();
String[] datos = new String[] {null,null,null,null};
String id= mat.getText().toString();
id=id.trim();
if (id.length()<=0) {
Toast.makeText(getBaseContext(), "Debe capturar Matricula",
Toast.LENGTH_LONG).show();
return;
}
datos = dbHelper.leer(dbl,id);
if (datos[0]!=null) {
datos[0]=id;
datos[1]=nom.getText().toString();
datos[2]=ape.getText().toString();
datos[3]=leeSP();
dbHelper.cambiar(dbl, datos);
Toast.makeText(getBaseContext(), "Datos Modificados",
Toast.LENGTH_LONG).show();
} else {
datos[0]=id;
datos[1]=nom.getText().toString();
datos[2]=ape.getText().toString();
datos[3]=leeSP();
dbHelper.insertar(dbl, datos);
String[] datos2 = new String[] {null,null};
datos2 = dbHelper.leerCTA(dbl,"ISC");
Toast.makeText(getBaseContext(), "Datos Insertados",
Toast.LENGTH_LONG).show();
}
}
public void eMat(View v) {
EditText mat = (EditText)findViewById(R.id.mat);
alumSqlHelp dbHelper = new alumSqlHelp (getBaseContext());
SQLiteDatabase dbl = dbHelper.getReadableDatabase();
String[] datos = new String[] {null,null,null,null};
String id= mat.getText().toString();
id=id.trim();
if (id.length()<=0) {
Toast.makeText(getBaseContext(), "Debe capturar Matricula",
Toast.LENGTH_LONG).show();
return;
}
datos = dbHelper.leer(dbl,id);
if (datos[0]!=null) {
dbHelper.eliminar(dbl, id);
Toast.makeText(getBaseContext(), "Datos Eliminados",
Toast.LENGTH_LONG).show();
limpiar();
} else {
Toast.makeText(getBaseContext(),
"Datos no encontrados, intente de nuevo",
Toast.LENGTH_LONG).show();
}
}
public void genRep(View v) {
Intent i = new Intent(this, reporte.class);
startActivity(i);
}
public String leeSP() {
Spinner sp = (Spinner)findViewById(R.id.carrera);
String selec=sp.getSelectedItem().toString();
return selec;
}
public void limpiar() {
EditText mat = (EditText)findViewById(R.id.mat);
EditText nom = (EditText)findViewById(R.id.nom);
EditText ape = (EditText)findViewById(R.id.ape);
Spinner sp = (Spinner)findViewById(R.id.carrera);
mat.setText("");
nom.setText("");
ape.setText("");
sp.setSelection(0);
}
public void salir(View view) {
finish();
}
}
Programa que controla la BD en SQLite
package com.example.alumnos;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.database.Cursor;
public class alumSqlHelp extends SQLiteOpenHelper {
private static int version = 1;
private static String name = "AlumnosDb" ;
private static CursorFactory factory = null;
public alumSqlHelp(Context context)
{
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db)
{
try {
db.execSQL("CREATE TABLE Alumnos(" +
" al_mat INTEGER PRIMARY KEY not null," +
" al_nom TEXT NOT NULL, " +
" al_ape TEXT NOT NULL, " +
" al_car TEXT NOT NULL )" );
Log.d("Alumnos", "Tabla creada");
db.execSQL("CREATE TABLE AlumCTA(" +
" alc_carrera text PRIMARY KEY not null," +
" alc_conta INTEGER NOT NULL)" );
Log.d("AlumCTA", "Tabla creada");
} catch (Exception e) {
Log.d("tablas", "Tablas NO creadas");
}
db.execSQL("INSERT INTO AlumCTA VALUES('IIA',0)");
db.execSQL("INSERT INTO AlumCTA VALUES('IIND',0)");
db.execSQL("INSERT INTO AlumCTA VALUES('IGE',0)");
db.execSQL("INSERT INTO AlumCTA VALUES('ISC',0)");
db.execSQL("INSERT INTO AlumCTA VALUES('IMEC',0)");
db.execSQL("INSERT INTO AlumCTA VALUES('IIAS',0)");
db.execSQL("CREATE trigger contINS after insert on " +
" Alumnos begin"+
" UPDATE AlumCTA set alc_conta=alc_conta+1 " +
" where alc_carrera=NEW.al_car; end; ");
Log.d("AlumnosDB", "Trigger consINS Creado");
db.execSQL("CREATE trigger contDEL after delete on " +
" Alumnos begin"+
" UPDATE AlumCTA set alc_conta=alc_conta-1 "+
" where alc_carrera=OLD.al_car; end; ");
Log.d("AlumnosDB", "Trigger consDEL Creado");
db.execSQL("CREATE trigger contUPD after update on " +
"Alumnos begin"+
" UPDATE AlumCTA set alc_conta=alc_conta-1 "+
" where alc_carrera=OLD.al_car; "+
" UPDATE AlumCTA set alc_conta=alc_conta+1 "+
" where alc_carrera=NEW.al_car; end;");
Log.d("AlumnosDB", "Trigger consUPD Creado");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion)
{
Log.d("onUpgrade",
"entrada al sistema sin creacion de tablas");
}
public String[] leer(SQLiteDatabase db, String mat)
{
String[] campos = new String[] {
"al_mat", "al_nom","al_ape","al_car"};
String[] args = new String[] {mat};
String[] dato = new String[] {null,null,null,null};
Cursor c = db.query("Alumnos", campos, "al_mat = ?",
args, null, null, null);
if (c.moveToFirst()) {
dato[0] = c.getString(0);
dato[1] = c.getString(1);
dato[2] = c.getString(2);
dato[3] = c.getString(3);
}
return dato;
}
public void insertar(SQLiteDatabase db, String [] datos)
{
String cadena ="INSERT INTO Alumnos VALUES("+
datos[0]+",'"+datos[1]+"','"+
datos[2]+"','"+datos[3]+"')";
db.execSQL(cadena);
}
public void cambiar(SQLiteDatabase db, String [] datos)
{
String cadena ="update Alumnos set "+
"al_nom='"+datos[1]+"', "+
"al_ape='"+datos[2]+"', "+
"al_car='"+ datos[3]+"' "+
"where al_mat ="+datos[0];
db.execSQL(cadena);
}
public void eliminar(SQLiteDatabase db, String mat)
{
String cadena ="delete from Alumnos "+
"where al_mat ="+mat;
db.execSQL(cadena);
}
public String[] leerCTA(SQLiteDatabase db, String carr)
{
String[] campos = new String[] {"alc_carrera",
"alc_conta"};
String[] args = new String[] {carr};
String[] dato = new String[] {null,null};
Cursor c = db.query("AlumCTA", campos, "alc_carrera = ?",
args, null, null, null);
if (c.moveToFirst()) {
dato[0] = c.getString(0);
dato[1] = c.getString(1);
}
return dato;
}
}
Programa que controla el reporte general
package com.example.trigger;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import android.app.Activity;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class reporte extends Activity{
String[] datIIA;
String[] datIIND;
String[] datIGE;
String[] datISC;
String[] datIMEC;
String[] datIIAS;
alumSqlHelp dbHelper;
SQLiteDatabase dbl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.reportes);
}
public void generar(View v) {
TextView IIA = (TextView)findViewById(R.id.iia);
TextView IIND = (TextView)findViewById(R.id.iind);
TextView IGE = (TextView)findViewById(R.id.ige);
TextView ISC = (TextView)findViewById(R.id.isc);
TextView IMEC = (TextView)findViewById(R.id.imec);
TextView IIAS = (TextView)findViewById(R.id.iias);
lectura();
IIA.setText(IIA.getText()+datIIA[1].toString());
IIND.setText(IIND.getText()+datIIND[1].toString());
IGE.setText(IGE.getText()+datIGE[1].toString());
ISC.setText(ISC.getText()+datISC[1].toString());
IMEC.setText(IMEC.getText()+datIMEC[1].toString());
IIAS.setText(IIAS.getText()+datIIAS[1].toString());
return;
}
public void archivo (View v){
String nomarchivo="carreras.txt";
String contenido="";
lectura();
contenido="IIA: "+datIIA[1].toString()+"nr" +
"IIND: "+datIIND[1].toString()+"nr" +
"IGE: "+datIGE[1].toString()+"nr" +
"ISC: "+datISC[1].toString()+"nr" +
"IMEC: "+datIMEC[1].toString()+"nr" +
"IIAS: "+datIIAS[1].toString();
try{
File tarjetaSD =Environment.getExternalStorageDirectory();
File file=new File(tarjetaSD.getAbsolutePath(),nomarchivo);
OutputStreamWriter osw= new OutputStreamWriter(
new FileOutputStream(file));
osw.write(contenido);
osw.flush();
osw.close();
Toast.makeText(this, "Archivo carreras.txt generado",
Toast.LENGTH_SHORT).show();
}catch(IOException ioe){
Toast.makeText(this,
"No se pudo generar archivo de texto",
Toast.LENGTH_SHORT).show();
Log.d("reporte",
"No se pudo generar archivo de texto");
}
}
public void lectura() {
datIIA = new String[] {null,null};
datIIND = new String[] {null,null};
datIGE = new String[] {null,null};
datISC = new String[] {null,null};
datIMEC = new String[] {null,null};
datIIAS = new String[] {null,null};
dbHelper = new alumSqlHelp (getBaseContext());
dbl = dbHelper.getReadableDatabase();
datIIA = dbHelper.leerCTA(dbl,"IIA");
datIIND = dbHelper.leerCTA(dbl,"IIND");
datIGE = dbHelper.leerCTA(dbl,"IGE");
datISC = dbHelper.leerCTA(dbl,"ISC");
datIMEC = dbHelper.leerCTA(dbl,"IMEC");
datIIAS = dbHelper.leerCTA(dbl,"IIAS");
}
public void salir(View view) {
finish();
}
}

More Related Content

What's hot

Perhitungan Dua Bilangan dengan Java NetBeans
Perhitungan Dua Bilangan dengan Java NetBeansPerhitungan Dua Bilangan dengan Java NetBeans
Perhitungan Dua Bilangan dengan Java NetBeans
Aldila Putri
 

What's hot (20)

1- Sourcecode Array
1- Sourcecode Array1- Sourcecode Array
1- Sourcecode Array
 
Most Common JavaScript Mistakes
Most Common JavaScript MistakesMost Common JavaScript Mistakes
Most Common JavaScript Mistakes
 
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...
 
Android Fast Track CRUD Android PHP MySql
Android Fast Track CRUD Android PHP MySqlAndroid Fast Track CRUD Android PHP MySql
Android Fast Track CRUD Android PHP MySql
 
Spring Framework Orm Di
Spring Framework Orm DiSpring Framework Orm Di
Spring Framework Orm Di
 
Cómo hacer una calculadora en java
Cómo hacer una calculadora en javaCómo hacer una calculadora en java
Cómo hacer una calculadora en java
 
Cajero
CajeroCajero
Cajero
 
Алексей Кутумов, C++ без исключений, часть 3
Алексей Кутумов,  C++ без исключений, часть 3Алексей Кутумов,  C++ без исключений, часть 3
Алексей Кутумов, C++ без исключений, часть 3
 
Perhitungan Dua Bilangan dengan Java NetBeans
Perhitungan Dua Bilangan dengan Java NetBeansPerhitungan Dua Bilangan dengan Java NetBeans
Perhitungan Dua Bilangan dengan Java NetBeans
 
Practical JavaScript Programming - Session 3/8
Practical JavaScript Programming - Session 3/8Practical JavaScript Programming - Session 3/8
Practical JavaScript Programming - Session 3/8
 
Dwr实战
Dwr实战Dwr实战
Dwr实战
 
Функциональное реактивное программирование
Функциональное реактивное программированиеФункциональное реактивное программирование
Функциональное реактивное программирование
 
RxSwift 예제로 감잡기
RxSwift 예제로 감잡기RxSwift 예제로 감잡기
RxSwift 예제로 감잡기
 
JSF 2 and Ajax
JSF 2 and  AjaxJSF 2 and  Ajax
JSF 2 and Ajax
 
Hacer una calculadora en Java y en Visual Basic
Hacer una calculadora en Java y en Visual BasicHacer una calculadora en Java y en Visual Basic
Hacer una calculadora en Java y en Visual Basic
 
Java AWT Calculadora
Java AWT CalculadoraJava AWT Calculadora
Java AWT Calculadora
 
Testování prakticky
Testování praktickyTestování prakticky
Testování prakticky
 
Programa
ProgramaPrograma
Programa
 
Parse
ParseParse
Parse
 
algoritmos condicionales y simples.
algoritmos condicionales y simples.algoritmos condicionales y simples.
algoritmos condicionales y simples.
 

More from José Antonio Sandoval Acosta

More from José Antonio Sandoval Acosta (20)

Linea del tiempo de la inteligencia artificial.pptx
Linea del tiempo de la inteligencia artificial.pptxLinea del tiempo de la inteligencia artificial.pptx
Linea del tiempo de la inteligencia artificial.pptx
 
UNIDAD 2 CLASIFICACION DE LOS MATERIALES.pptx
UNIDAD 2 CLASIFICACION DE LOS  MATERIALES.pptxUNIDAD 2 CLASIFICACION DE LOS  MATERIALES.pptx
UNIDAD 2 CLASIFICACION DE LOS MATERIALES.pptx
 
croquis de aulas UAIM topolobampo FEB 2024
croquis de aulas UAIM topolobampo  FEB 2024croquis de aulas UAIM topolobampo  FEB 2024
croquis de aulas UAIM topolobampo FEB 2024
 
Ing. Mecatronica Prog. Básica, U5 Módulos
Ing. Mecatronica Prog. Básica, U5 MódulosIng. Mecatronica Prog. Básica, U5 Módulos
Ing. Mecatronica Prog. Básica, U5 Módulos
 
Ing. Mecatronica Prog. Básica U4 Arreglos y estructuras
Ing. Mecatronica Prog. Básica U4 Arreglos y estructurasIng. Mecatronica Prog. Básica U4 Arreglos y estructuras
Ing. Mecatronica Prog. Básica U4 Arreglos y estructuras
 
Ing. Mecatrónica, Prog. Básica U3 control de flujo
Ing. Mecatrónica, Prog. Básica U3 control de flujoIng. Mecatrónica, Prog. Básica U3 control de flujo
Ing. Mecatrónica, Prog. Básica U3 control de flujo
 
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacion
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacionIng. Mecatrónica, Prog. Básica, U2 intro a la programacion
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacion
 
Ing. Mecatrónica, Prog. Básica U1; Conceptos basicos y algoritmos
Ing. Mecatrónica, Prog. Básica U1; Conceptos basicos y algoritmosIng. Mecatrónica, Prog. Básica U1; Conceptos basicos y algoritmos
Ing. Mecatrónica, Prog. Básica U1; Conceptos basicos y algoritmos
 
Manual de prácticas y antología para POO
Manual de prácticas y antología para  POOManual de prácticas y antología para  POO
Manual de prácticas y antología para POO
 
Aplicaciones móviles intro.
Aplicaciones móviles intro.Aplicaciones móviles intro.
Aplicaciones móviles intro.
 
Economia
EconomiaEconomia
Economia
 
ISCA-quimica-Equipo 2.pptx
ISCA-quimica-Equipo 2.pptxISCA-quimica-Equipo 2.pptx
ISCA-quimica-Equipo 2.pptx
 
Plantilla presentación.pptx
Plantilla presentación.pptxPlantilla presentación.pptx
Plantilla presentación.pptx
 
kitchenham.pptx
kitchenham.pptxkitchenham.pptx
kitchenham.pptx
 
Diagrama de Casos de Uso UML
Diagrama de Casos de Uso UMLDiagrama de Casos de Uso UML
Diagrama de Casos de Uso UML
 
Introducción al Diagrama de Clases UML
Introducción al Diagrama de Clases UMLIntroducción al Diagrama de Clases UML
Introducción al Diagrama de Clases UML
 
Diagrama de clases UML
Diagrama de clases UMLDiagrama de clases UML
Diagrama de clases UML
 
Diagrama UML Casos de Uso
Diagrama UML Casos de UsoDiagrama UML Casos de Uso
Diagrama UML Casos de Uso
 
Tema 3 - Comandos básicos.pdf
Tema 3 - Comandos básicos.pdfTema 3 - Comandos básicos.pdf
Tema 3 - Comandos básicos.pdf
 
Tema 1 - Intro.pdf
Tema 1 - Intro.pdfTema 1 - Intro.pdf
Tema 1 - Intro.pdf
 

Proyecto Final Android-SQLite

  • 1. Proyecto integrador para SQLite y Android Realice una app en Android con las siguientes características: • Debe tener las facilidades de consultar, insertar, eliminar y modificar de SQLite, en una base de datos llamada AlumnosDB. • La app debe capturar la pantalla de un proceso de alumnos que contiene Matrícula, Nombre, Apellidos, y Carrera en una tabla llamada Alumnos. • La carrera debe ser seleccionada de una lista por lo que debes utilizar el componente adecuado para generarla. • La app debe contar con una tabla llamada estadistica que contabilice la cantidad de estudiantes por carrera por medio de triggers; • Cada vez que un estudiante es agregado debe incrementarse el contador por carrera, de igual forma, cuando un estudiante es eliminado debe reducirse el contador de la carrera correspondiente. Asimismo, si un estudiante es cambiado de carrera debe restar de la carrera anterior y sumar a la carrera actual. • También debe contar con un segundo activity, el cual contendrá un reporte por carrera indicando cuantos estudiantes hay activos en cada una de las mismas y pueda generar un archivo de texto con el contenido de la tabla. • Debes cuidar que cuando se pretenda modificar o eliminar un dato que no exista enviar a pantalla el mensaje apropiado. Ejemplo de pantallas a utilizar
  • 2. Programa principal package com.example.trigger; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.database.sqlite.SQLiteDatabase; import android.view.View; import android.widget.EditText; import android.widget.Toast; import android.widget.Spinner; import android.content.Intent; import android.widget.ArrayAdapter; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Spinner sp = (Spinner)findViewById(R.id.carrera); String []carreras = {"IIA","IIND","IGE","ISC","IMEC","IIAS"}; ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, carreras); sp.setAdapter(adapter); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } public void bMat(View v) { EditText mat = (EditText)findViewById(R.id.mat); EditText nom = (EditText)findViewById(R.id.nom); EditText ape = (EditText)findViewById(R.id.ape); Spinner sp = (Spinner)findViewById(R.id.carrera); alumSqlHelp dbHelper = new alumSqlHelp (getBaseContext()); SQLiteDatabase dbl = dbHelper.getReadableDatabase(); String[] datos = new String[] {null,null,null,null}; String id= mat.getText().toString(); if (id.trim().length()<=0) { Toast.makeText(getBaseContext(), "Debe capturar Matricula", Toast.LENGTH_LONG).show(); return; } datos = dbHelper.leer(dbl,id); if (datos[0]!=null) { nom.setText(datos[1]); ape.setText(datos[2]); int pos=0; for (pos=0; pos<sp.getCount(); pos++) { if (datos[3].trim().equals( sp.getItemAtPosition(pos).toString())) break; } sp.setSelection(pos);
  • 3. } else { nom.setText(""); ape.setText(""); sp.setSelection(0); Toast.makeText(getBaseContext(), "Dato no encontrado", Toast.LENGTH_LONG).show(); } } public void gMat(View v) { EditText mat = (EditText)findViewById(R.id.mat); EditText nom = (EditText)findViewById(R.id.nom); EditText ape = (EditText)findViewById(R.id.ape); alumSqlHelp dbHelper = new alumSqlHelp (getBaseContext()); SQLiteDatabase dbl = dbHelper.getReadableDatabase(); String[] datos = new String[] {null,null,null,null}; String id= mat.getText().toString(); id=id.trim(); if (id.length()<=0) { Toast.makeText(getBaseContext(), "Debe capturar Matricula", Toast.LENGTH_LONG).show(); return; } datos = dbHelper.leer(dbl,id); if (datos[0]!=null) { datos[0]=id; datos[1]=nom.getText().toString(); datos[2]=ape.getText().toString(); datos[3]=leeSP(); dbHelper.cambiar(dbl, datos); Toast.makeText(getBaseContext(), "Datos Modificados", Toast.LENGTH_LONG).show(); } else { datos[0]=id; datos[1]=nom.getText().toString(); datos[2]=ape.getText().toString(); datos[3]=leeSP(); dbHelper.insertar(dbl, datos); String[] datos2 = new String[] {null,null}; datos2 = dbHelper.leerCTA(dbl,"ISC"); Toast.makeText(getBaseContext(), "Datos Insertados", Toast.LENGTH_LONG).show(); } } public void eMat(View v) { EditText mat = (EditText)findViewById(R.id.mat); alumSqlHelp dbHelper = new alumSqlHelp (getBaseContext()); SQLiteDatabase dbl = dbHelper.getReadableDatabase(); String[] datos = new String[] {null,null,null,null}; String id= mat.getText().toString(); id=id.trim(); if (id.length()<=0) { Toast.makeText(getBaseContext(), "Debe capturar Matricula", Toast.LENGTH_LONG).show(); return; }
  • 4. datos = dbHelper.leer(dbl,id); if (datos[0]!=null) { dbHelper.eliminar(dbl, id); Toast.makeText(getBaseContext(), "Datos Eliminados", Toast.LENGTH_LONG).show(); limpiar(); } else { Toast.makeText(getBaseContext(), "Datos no encontrados, intente de nuevo", Toast.LENGTH_LONG).show(); } } public void genRep(View v) { Intent i = new Intent(this, reporte.class); startActivity(i); } public String leeSP() { Spinner sp = (Spinner)findViewById(R.id.carrera); String selec=sp.getSelectedItem().toString(); return selec; } public void limpiar() { EditText mat = (EditText)findViewById(R.id.mat); EditText nom = (EditText)findViewById(R.id.nom); EditText ape = (EditText)findViewById(R.id.ape); Spinner sp = (Spinner)findViewById(R.id.carrera); mat.setText(""); nom.setText(""); ape.setText(""); sp.setSelection(0); } public void salir(View view) { finish(); } }
  • 5. Programa que controla la BD en SQLite package com.example.alumnos; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; import android.database.Cursor; public class alumSqlHelp extends SQLiteOpenHelper { private static int version = 1; private static String name = "AlumnosDb" ; private static CursorFactory factory = null; public alumSqlHelp(Context context) { super(context, name, factory, version); } @Override public void onCreate(SQLiteDatabase db) { try { db.execSQL("CREATE TABLE Alumnos(" + " al_mat INTEGER PRIMARY KEY not null," + " al_nom TEXT NOT NULL, " + " al_ape TEXT NOT NULL, " + " al_car TEXT NOT NULL )" ); Log.d("Alumnos", "Tabla creada"); db.execSQL("CREATE TABLE AlumCTA(" + " alc_carrera text PRIMARY KEY not null," + " alc_conta INTEGER NOT NULL)" ); Log.d("AlumCTA", "Tabla creada"); } catch (Exception e) { Log.d("tablas", "Tablas NO creadas"); } db.execSQL("INSERT INTO AlumCTA VALUES('IIA',0)"); db.execSQL("INSERT INTO AlumCTA VALUES('IIND',0)"); db.execSQL("INSERT INTO AlumCTA VALUES('IGE',0)"); db.execSQL("INSERT INTO AlumCTA VALUES('ISC',0)"); db.execSQL("INSERT INTO AlumCTA VALUES('IMEC',0)"); db.execSQL("INSERT INTO AlumCTA VALUES('IIAS',0)"); db.execSQL("CREATE trigger contINS after insert on " + " Alumnos begin"+ " UPDATE AlumCTA set alc_conta=alc_conta+1 " + " where alc_carrera=NEW.al_car; end; "); Log.d("AlumnosDB", "Trigger consINS Creado"); db.execSQL("CREATE trigger contDEL after delete on " + " Alumnos begin"+ " UPDATE AlumCTA set alc_conta=alc_conta-1 "+ " where alc_carrera=OLD.al_car; end; "); Log.d("AlumnosDB", "Trigger consDEL Creado"); db.execSQL("CREATE trigger contUPD after update on " + "Alumnos begin"+ " UPDATE AlumCTA set alc_conta=alc_conta-1 "+ " where alc_carrera=OLD.al_car; "+ " UPDATE AlumCTA set alc_conta=alc_conta+1 "+
  • 6. " where alc_carrera=NEW.al_car; end;"); Log.d("AlumnosDB", "Trigger consUPD Creado"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.d("onUpgrade", "entrada al sistema sin creacion de tablas"); } public String[] leer(SQLiteDatabase db, String mat) { String[] campos = new String[] { "al_mat", "al_nom","al_ape","al_car"}; String[] args = new String[] {mat}; String[] dato = new String[] {null,null,null,null}; Cursor c = db.query("Alumnos", campos, "al_mat = ?", args, null, null, null); if (c.moveToFirst()) { dato[0] = c.getString(0); dato[1] = c.getString(1); dato[2] = c.getString(2); dato[3] = c.getString(3); } return dato; } public void insertar(SQLiteDatabase db, String [] datos) { String cadena ="INSERT INTO Alumnos VALUES("+ datos[0]+",'"+datos[1]+"','"+ datos[2]+"','"+datos[3]+"')"; db.execSQL(cadena); } public void cambiar(SQLiteDatabase db, String [] datos) { String cadena ="update Alumnos set "+ "al_nom='"+datos[1]+"', "+ "al_ape='"+datos[2]+"', "+ "al_car='"+ datos[3]+"' "+ "where al_mat ="+datos[0]; db.execSQL(cadena); } public void eliminar(SQLiteDatabase db, String mat) { String cadena ="delete from Alumnos "+ "where al_mat ="+mat; db.execSQL(cadena); } public String[] leerCTA(SQLiteDatabase db, String carr) { String[] campos = new String[] {"alc_carrera",
  • 7. "alc_conta"}; String[] args = new String[] {carr}; String[] dato = new String[] {null,null}; Cursor c = db.query("AlumCTA", campos, "alc_carrera = ?", args, null, null, null); if (c.moveToFirst()) { dato[0] = c.getString(0); dato[1] = c.getString(1); } return dato; } }
  • 8. Programa que controla el reporte general package com.example.trigger; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import android.app.Activity; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.view.View; import android.widget.TextView; import android.widget.Toast; public class reporte extends Activity{ String[] datIIA; String[] datIIND; String[] datIGE; String[] datISC; String[] datIMEC; String[] datIIAS; alumSqlHelp dbHelper; SQLiteDatabase dbl; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.reportes); } public void generar(View v) { TextView IIA = (TextView)findViewById(R.id.iia); TextView IIND = (TextView)findViewById(R.id.iind); TextView IGE = (TextView)findViewById(R.id.ige); TextView ISC = (TextView)findViewById(R.id.isc); TextView IMEC = (TextView)findViewById(R.id.imec); TextView IIAS = (TextView)findViewById(R.id.iias); lectura(); IIA.setText(IIA.getText()+datIIA[1].toString()); IIND.setText(IIND.getText()+datIIND[1].toString()); IGE.setText(IGE.getText()+datIGE[1].toString()); ISC.setText(ISC.getText()+datISC[1].toString()); IMEC.setText(IMEC.getText()+datIMEC[1].toString()); IIAS.setText(IIAS.getText()+datIIAS[1].toString()); return; } public void archivo (View v){ String nomarchivo="carreras.txt"; String contenido=""; lectura(); contenido="IIA: "+datIIA[1].toString()+"nr" + "IIND: "+datIIND[1].toString()+"nr" + "IGE: "+datIGE[1].toString()+"nr" +
  • 9. "ISC: "+datISC[1].toString()+"nr" + "IMEC: "+datIMEC[1].toString()+"nr" + "IIAS: "+datIIAS[1].toString(); try{ File tarjetaSD =Environment.getExternalStorageDirectory(); File file=new File(tarjetaSD.getAbsolutePath(),nomarchivo); OutputStreamWriter osw= new OutputStreamWriter( new FileOutputStream(file)); osw.write(contenido); osw.flush(); osw.close(); Toast.makeText(this, "Archivo carreras.txt generado", Toast.LENGTH_SHORT).show(); }catch(IOException ioe){ Toast.makeText(this, "No se pudo generar archivo de texto", Toast.LENGTH_SHORT).show(); Log.d("reporte", "No se pudo generar archivo de texto"); } } public void lectura() { datIIA = new String[] {null,null}; datIIND = new String[] {null,null}; datIGE = new String[] {null,null}; datISC = new String[] {null,null}; datIMEC = new String[] {null,null}; datIIAS = new String[] {null,null}; dbHelper = new alumSqlHelp (getBaseContext()); dbl = dbHelper.getReadableDatabase(); datIIA = dbHelper.leerCTA(dbl,"IIA"); datIIND = dbHelper.leerCTA(dbl,"IIND"); datIGE = dbHelper.leerCTA(dbl,"IGE"); datISC = dbHelper.leerCTA(dbl,"ISC"); datIMEC = dbHelper.leerCTA(dbl,"IMEC"); datIIAS = dbHelper.leerCTA(dbl,"IIAS"); } public void salir(View view) { finish(); } }