Introducción al manejo de Bases de Datos con SQLite. Version Android
|
|
|
- Salvador Villanueva Agüero
- hace 10 años
- Vistas:
Transcripción
1 Universidad de El Salvador Facultad de Ingeniería y Arquitectura Escuela de Ingeniería en Sistemas Programación en Dispositivos Móviles Objetivo: Guía de Laboratorio N 06 A Introducción al manejo de Bases de Datos con SQLite Que el alumno: Version Android 1- Implemente una base de datos a partir de su diseño Conceptual en una aplicación Android, usando el lenguaje SQLite. 2- Aprenda a crear una base de datos, y usar los métodos Update, Insert, Delete y Query para llevar su administración. Descripción: Esta práctica consistirá en realizar una aplicación que permita crear una base de datos o abrir una existente, conectarse a ella y que pueda manipularse desde la interfaz de usuario con sus respectivas Activities.
2 Contenido BASE DE DATOS CARNET,... 1 MODELO CONCEPTUAL MODELO FISICO(BASE ORACLE 11)... 1 SCRIPT DE BASE DE DATOS... 1 ESTRUCTURA DE LA APLICACION... 2 CREACION DE APLICACIÓN(ACTIVITIES Y OTRAS CLASES)... 3 Creación del proyecto... 3 Creación del Activities... 3 Creación del Clases de control de objetos... 4 Creación del Clases controladora de Base de Datos... 4 Estructura resultante... 5 Creación de variables string para los layouts... 6 Menú Principal... 7 Submenús de tablas... 8 Clases Auxiliares para Manejo de Datos Clase Alumno Clase Materia Clase Nota CONTROL DE LA BASE DE DATOS Clase que controlara la base de datos PROGRAMACION DE LOS LAYOUTS Y ACTIVITIES POR TABLA TablaAlumno Correr el Programa por primera vez Copiar Base de Datos inicial y ver su contenido Probar opciones hechas para la tabla Alumnos desde el simulador Ver el contenido de la tabla Alumno de nuevo TABLA NOTA Método consultar (Nota) Método actualizar (Nota) Anexos... 55
3 BASE DE DATOS CARNET, MODELO CONCEPTUAL. Nota:revise las cardinalidades(chequear dependencia) MODELO FISICO(BASE ORACLE 11) Nota: Puede auxiliarse de la guia01 de Bases de Datos SCRIPT DE BASE DE DATOS Nota: Buscar opción de generar base de datos(script) 1
4 ESTRUCTURA DE LA APLICACION La aplicación que realizaremos en esta práctica, tendrá en general la siguiente estructura: Diagrama Top Down BaseDatosCarnetActivity AlumnoMenuActivity NotaMenuActivity MateriaMenuActivity Alumno Insertar Activity Alumno Eliminar Activity Alumno Actualizar Activity Alumno Consultar Activity Nota Insertar Activity Nota Eliminar Activity Nota Actualizar Activity Nota Consultar Activity Materia Insertar Activity Materia Eliminar Activity Materia Actualizar Activity Mareria Consultar Activity Ahora pasaremos a desarrollar la aplicación a medida que desarrollemos las activities. Por tanto desarrollaremos el código en Java al mismo tiempo. Luego, realizaremos un clase en Java que nos permita controlar cada aspecto de nuestra base de datos, antes que nada, debemos tener presente que SQLite no implementa llaves foráneas, por lo que deberemos comprobar la integridad antes de insertar, modificar o borrar datos de las tablas. 2
5 CREACION DE APLICACIÓN(ACTIVITIES Y OTRAS CLASES) Creación del proyecto Para empezar con nuestra aplicación, crea un nuevo proyecto con los siguientes parámetros: Creación del Activities Según el diagrama top down, crear los activities siguientes: Para los menus AlumnoMenuActivity. NotaMenuActivity. MateriaMenuActivity. Para las opciones de Alumno AlumnoInsertarActivity. AlumnoEliminarActivity. AlumnoActualizarActivity. AlumnoConsultarActivity. 3
6 Para las opciones de Nota NotaInsertarActivity. NotaEliminarActivity. NotaActualizarActivity. NotaConsultarActivity. Para las opciones de Materia MateriaInsertarActivity. MateriaEliminarActivity. MateriaActualizarActivity. MateriaConsultarActivity. Creación del Clases de control de objetos Estas clases nos servirán para manipular objetos de cada tabla mediante métodos get y set. Crear como una clase de java : Alumno. Nota. Materia. Creación del Clases controladora de Base de Datos Estas clases nos servirán para manipular los eventos relacionados con la base de datos Carnet03 Crear como una clase de java : ControlBDCarnet 4
7 Estructura resultante Con lo anterior quedara esta estructura: 5
8 Creación de variables string para los layouts Antes de iniciar a modificar cualquier interfaz que permitirán administrar la base de datos Carnet, agregaremos las siguientes variables al recurso strings.xml, de donde llamaremos en cada uno de los layout, los label o texto estándar que mostraran los componentes según sea necesario utilizarlos, tales como el texto que mostrara cada TextView o los diferentes Botones. <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">basedatoscarnet</string> <string name="action_settings">settings</string> <string name="hello_world">hello world!</string> <string name="title_activity_alumno_menu">alumnomenuactivity</string> <string name="title_activity_nota_menu">notamenuactivity</string> <string name="title_activity_materia_menu">materiamenuactivity</string> <string name="title_activity_alumno_insertar">alumnoinsertaractivity</string> <string name="title_activity_alumno_eliminar">alumnoeliminaractivity</string> <string name="title_activity_alumno_actualizar">alumnoactualizaractivity</string> <string name="title_activity_alumno_consultar">alumnoconsultaractivity</string> <string name="title_activity_nota_insertar">notainsertaractivity</string> <string name="title_activity_nota_eliminar">notaeliminaractivity</string> <string name="title_activity_nota_actualizar">notaactualizaractivity</string> <string name="title_activity_nota_consultar">notaconsultaractivity</string> <string name="title_activity_materia_insertar">materiainsertaractivity</string> <string name="title_activity_materia_eliminar">materiaeliminaractivity</string> <string name="title_activity_materia_actualizar">materiaactualizaractivity</string> <string name="title_activity_materia_consultar">materiaconsultaractivity</string> <string name="alumno_menu">función a Ejecutar Alumno</string> <string name="nota_menu">función a Ejecutar Nota</string> <string name="materia_menu">función a Ejecutar Materia</string> <string name="insertar_registro">insertar Registro</string> <string name="eliminar_registro">eliminar Registro</string> <string name="consultar_registro">consultar Registro</string> <string name="actualizar_registro">actualizar Registro</string> <string name="carnet">carnet</string> <string name="nombre">nombre</string> <string name="apellido">apellido</string> <string name="sexo">sexo</string> <string name="matganadas">materias Ganadas</string> <string name="insertar">insertar</string> <string name="eliminar">eliminar</string> <string name="actualizar">actualizar</string> <string name="consultar">consultar</string> 6
9 <string name="ciclo">ciclo</string> <string name="notafinal">nota Final</string> <string name="codmateria">codigo</string> <string name="unidadesval">unidades Valorativas</string> <string name="limpiar">limpiar</string> <string name="codmatnota">codigo Materia</string> <string name="nommateria">nombre Materia</string> <string name="opciones">opciones:</string> </resources> Menú Principal Realizaremos un menú similar al del laboratorio N 2, note que esta vez no usaremos un recurso layout para nuestra interfaz, pero si implementaremos un extends de la clase ListActivity que nos facilitara la creación de un ListView programáticamente. Modifica el archivo: BaseDatosCarnetActivity.java con el siguiente código. package sv.ues.fia.basedatoscarnet; import android.app.listactivity; import android.content.intent; import android.os.bundle; import android.view.view; import android.widget.arrayadapter; import android.widget.listview; public class BaseDatosCarnetActivity extends ListActivity { String[] menu={"tabla Alumno","Tabla Nota","Tabla Materia","LLenar Base de Datos"; String[] public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setlistadapter(new ArrayAdapter<String>(this, android.r.layout.simple_list_item_1, protected void onlistitemclick(listview l,view v,int position,long id){ super.onlistitemclick(l, v, position, id); if(position!=3){ String nombrevalue=activities[position]; try{ Class<?> clase=class.forname("sv.ues.fia.basedatoscarnet."+nombrevalue); Intent inte = new Intent(this,clase); 7
10 else{ this.startactivity(inte); catch(classnotfoundexception e){ e.printstacktrace(); //CODIGO PARA LLENAR BASE DE DATOS OBSERVA que al seleccionar en el menú Llenar Base de Datos, ubicado en la position número 3 (ya que el índice de un arreglo inicia en cero) se deberá ejecutar cierto código que permita llenar la base de datos carnet.s3ql. Dejaremos esto asi y regreseramos a modificar BaseDatosAlumnoActivity.java más adelante en la práctica. Ejecuta la aplicación, deberías ver algo como esto: Submenús de tablas Hasta aquí podemos seleccionar la tabla que queremos utilizar, sin embargo necesitaremos un submenú que muestre la operación a realizar sobre la tabla seleccionada (insertar, eliminar, consultar o modificar datos). Para ello crearemos un submenú para cada tabla de esta manera Sub menú Alumno: Modifi una nueva la clase dentro del paquete sv.ues.fia.basedatoscarnet llamada AlumnoMenuActivity.java, esta deberá contener el siguiente código. package sv.ues.fia.basedatoscarnet; import android.app.listactivity; import android.content.intent; import android.graphics.color; import android.os.bundle; import android.view.view; import android.widget.arrayadapter; import android.widget.listview; public class AlumnoMenuActivity extends ListActivity { 8
11 String[] menu={"insertar Registro","Eliminar Registro","Consultar Registro", "Actualizar Registro"; String[] activities={"alumnoinsertaractivity","alumnoeliminaractivity","alumnoconsultaractivity", public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); ListView listview = getlistview(); listview.setbackgroundcolor(color.rgb(0, 0, 255)); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, menu); protected void onlistitemclick(listview l,view v,int position,long id){ super.onlistitemclick(l, v, position, id); String nombrevalue=activities[position]; l.getchildat(position).setbackgroundcolor(color.rgb(128, 128, 255)); try{ Class<?> clase=class.forname("sv.ues.fia.basedatoscarnet."+nombrevalue); Intent inte = new Intent(this,clase); this.startactivity(inte); catch(classnotfoundexception e){ e.printstacktrace(); Sub menú Nota: Modifica la clase dentro del paquete sv.ues.fia.basedatoscarnet llamada NotaMenuActivity.java, esta deberá contener el siguiente código. package sv.ues.fia.basedatoscarnet; import android.app.listactivity; import android.content.intent; import android.graphics.color; import android.os.bundle; import android.view.view; import android.widget.arrayadapter; import android.widget.listview; public class NotaMenuActivity extends ListActivity { 9
12 String[] menu={"insertar Registro","Eliminar Registro","Consultar Registro", "Actualizar Registro"; String[] activities={"notainsertaractivity","notaeliminaractivity","notaconsultaractivity", public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setlistadapter(new ArrayAdapter<String>(this, android.r.layout.simple_list_item_1, menu)); ListView listview = getlistview(); listview.setbackgroundcolor(color.rgb(64, 0, 128)); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, menu); protected void onlistitemclick(listview l,view v,int position,long id){ super.onlistitemclick(l, v, position, id); String nombrevalue=activities[position]; l.getchildat(position).setbackgroundcolor(color.rgb(255, 128, 0)); try{ Class<?> clase=class.forname("sv.ues.fia.basedatoscarnet."+nombrevalue); Intent inte = new Intent(this,clase); this.startactivity(inte); catch(classnotfoundexception e){ e.printstacktrace(); Sub menú Materia: Modifica la clase dentro del paquete sv.ues.fia.basedatoscarnet llamada MateriaMenuActivity.java, esta deberá contener el siguiente código. package sv.ues.fia.basedatoscarnet; import android.app.listactivity; import android.content.intent; import android.graphics.color; import android.os.bundle; import android.view.view; import android.widget.arrayadapter; import android.widget.listview; public class MateriaMenuActivity extends ListActivity { 10
13 String[] menu={"insertar Registro","Eliminar Registro","Consultar Registro", "Actualizar Registro"; String[] activities={"materiainsertaractivity","materiaeliminaractivity","materiaconsultaractivity", public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setlistadapter(new ArrayAdapter<String>(this, android.r.layout.simple_list_item_1, menu)); ListView listview = getlistview(); listview.setbackgroundcolor(color.rgb(0, 128, 64)); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, menu); protected void onlistitemclick(listview l,view v,int position,long id){ super.onlistitemclick(l, v, position, id); String nombrevalue=activities[position]; l.getchildat(position).setbackgroundcolor(color.rgb(0, 128, 64)); try{ Class<?> clase=class.forname("sv.ues.fia.basedatoscarnet."+nombrevalue); Intent inte = new Intent(this,clase); this.startactivity(inte); catch(classnotfoundexception e){ e.printstacktrace(); Ahora cada submenú se visualizara así: AlumnoMenuActivity NotaMenuActivity MateriaMenuActivity 11
14 Clases Auxiliares para Manejo de Datos Para simplificar y entender de mejor manera la lógica de nuestra aplicación haremos uso de 3 clases que encapsulan los datos que se almacenaran en las tablas. Estas son la clase Alumno, Materia y Nota, nótese que corresponden a las tres tablas de nuestra base de datos. El fin de estas clases es guardar y obtener los valores de una fila de la tabla, para hacer el uso adecuado de ellos. Dentro de nuestro paquete crear las 3 clases con el siguiente código: Clase Alumno. package sv.ues.fia.basedatoscarnet; public class Alumno { private String carnet; private String nombre; private String apellido; private String sexo; private int matganadas; public Alumno(){ public Alumno(String carnet, String nombre, String apellido, String sexo) { this.carnet = carnet; this.nombre = nombre; this.apellido = apellido; this.sexo = sexo; public String getcarnet() { return carnet; public void setcarnet(string carnet) { this.carnet = carnet; public String getnombre() { return nombre; public void setnombre(string nombre) { this.nombre = nombre; public String getapellido() { return apellido; public void setapellido(string apellido) { this.apellido = apellido; 12
15 public String getsexo() { return sexo; public void setsexo(string sexo) { this.sexo = sexo; public int getmatganadas() { return matganadas; public void setmatganadas(int matganadas) { this.matganadas = matganadas; Clase Materia. package sv.ues.fia.basedatoscarnet; public class Materia { private String codmateria; private String nommateria; private String unidadesval; public Materia(){ public Materia(String codmateria, String nommateria, String unidadesval) { this.codmateria = codmateria; this.nommateria = nommateria; this.unidadesval = unidadesval; public String getcodmateria() { return codmateria; public void setcodmateria(string codmateria) { this.codmateria = codmateria; public String getnommateria() { return nommateria; public void setnommateria(string nommateria) { this.nommateria = nommateria; 13
16 public String getunidadesval() { return unidadesval; public void setunidadesval(string unidadesval) { this.unidadesval = unidadesval; Clase Nota. package sv.ues.fia.basedatoscarnet; public class Nota { private String carnet; private String codmateria; private String ciclo; private float notafinal; public Nota(){ public Nota(String carnet, String codmateria, String ciclo, notafinal) { this.carnet = carnet; this.codmateria = codmateria; this.ciclo = ciclo; this.notafinal = notafinal; float public String getcarnet() { return carnet; public void setcarnet(string carnet) { this.carnet = carnet; public String getcodmateria() { return codmateria; public void setcodmateria(string codmateria) { this.codmateria = codmateria; public String getciclo() { return ciclo; public void setciclo(string ciclo) { 14
17 this.ciclo = ciclo; public float getnotafinal() { return notafinal; public void setnotafinal(float notafinal) { this.notafinal = notafinal; Observaciones El IDE Eclipse cuenta con la opción de insertar código que es de uso común, por ejemplo constructores y los métodos get y set, para ello inicialmente DEBEMOS ESPECIFICAR LOS MIEMBROS O ATRIBUTOS DE NUESTRA CLASE y luego ir al menú Source y la opción Generate Constructor using Fields y se mostrara el cuadro de dialogo de la figura, aquí seleccionamos todos miembros y presionamos OK. De igual manera podemos generar los métodos get y set en el menú Source y la opción Generate Getters and Setters, como muestra la figura, seleccionamos los miembros que deseemos y presionamos OK. Generando Constructores de la Clase Generando métodos Get y Set 15
18 CONTROL DE LA BASE DE DATOS Esta será la estructura de la clase que controlará nuestra base de datos en la aplicación. public class NuestraClaseQueControlaLaBD { Aquí declarar todas las variables que usamos private final Context context; private DatabaseHelper DBHelper; private SQLiteDatabase db; // Almacenara el context de nuestra Activity // Nuestro Auxiliador de BD // Instancia de nuestra BD public NuestraClaseQueControlaLaBD (Context ctx) { // Constructor this.context = ctx; DBHelper = new DatabaseHelper(context); private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context context) { super(context, NOMBRE_BASEDATOS, null, public void oncreate(sqlitedatabase db) { try { db.execsql( Comando1SQLpara CREAR_TABLA1 ); db.execsql( Comando2SQLpara CREAR_TABLA2 o llenarla ); catch (SQLException e) { public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { OJO: el método exectsql( ) solo permita ejecutar un comando SQL a la vez. Aquí nuestra lógica al actualizar nuestra base de datos // ---abrir la base de datos--- public void abrir() throws SQLException { db = DBHelper.getWritableDatabase(); // Abrir BD con permisos R/W return; // ---cerrar la base de datos--- public void cerrar() { DBHelper.close(); Aquí todos los métodos de inserción de datos a la base, de consulta, borrado, actualización y otros. 16
19 La clase SQLiteDatabase permite crear, borrar, ejecutar comandos SQL, y realizar otras tareas comunes para el manejo de bases de datos. Ahora bien, la clase SQLiteOpenHelper es una clase auxiliar para la creación de la base de datos y la gestión de las versiones por las que posiblemente cambiará la base de datos. Al hacer una clase EXTENDS de SQLiteOpenHelper unos de los métodos que se heredan, y los cuales son los más comunes a redefinir a nuestra conveniencia serán oncreate() y onupgrade() IMPORTANTE: NOMBRE_BASEDATOS es el nombre del archivo de nuestra base de datos, por lo que este parámetro es utilizado por el constructor de la clase SQLiteOpenHelper de manera que, si no encuentra la base de datos con el nombre NOMBRE_BASEDATOS especificado, convoca al método oncreate(), el cual redefinimos para que además de crear la base de datos, cree las tablas que necesitamos. DatabaseHelper solo nos ayuda, a definir nuestra lógica al crear la base de datos, a definir rutinas para crear las tablas si es primera vez que se crea, y a auxiliarnos para llevar el control de las versiones de la misma. Clase que controlara la base de datos Modifica la clase ControlBDCarnet.java dentro del paquete sv.ues.fia.basedatoscarnet, copiale este codigo. Nota: que hemos aplicado la estructura que se explico al inicio de esta practica. package sv.ues.fia.basedatoscarnet; import android.content.contentvalues; import android.content.context; import android.database.cursor; import android.database.sqlexception; import android.database.sqlite.sqlitedatabase; import android.database.sqlite.sqliteopenhelper; public class ControlBDCarnet{ private static final String[]camposAlumno = new String [] {"carnet","nombre","apellido","sexo", "matganadas"; private static final String[]camposNota = new String [] {"carnet","codmateria","ciclo","notafinal"; private static final String[] camposmateria = new String [] {"codmateria","nommateria","unidadesval"; private final Context context; private DatabaseHelper DBHelper; private SQLiteDatabase db; public ControlBDCarnet(Context ctx) { this.context = ctx; DBHelper = new DatabaseHelper(context); 17
20 private static class DatabaseHelper extends SQLiteOpenHelper { private static final String BASE_DATOS = "alumno.s3db"; private static final int VERSION = 1; public DatabaseHelper(Context context) { super(context, BASE_DATOS, null, public void oncreate(sqlitedatabase db) { try{ db.execsql("create TABLE alumno(carnet VARCHAR(7) NOT NULL PRIMARY KEY,nombre VARCHAR(30),apellido VARCHAR(30),sexo VARCHAR(1),matganadas INTEGER);"); db.execsql("create TABLE materia(codmateria VARCHAR(6) NOT NULL PRIMARY KEY,nommateria VARCHAR(30),unidadesval VARCHAR(1));"); db.execsql("create TABLE nota(carnet VARCHAR(7) NOT NULL,codmateria VARCHAR(6) NOT NULL,ciclo VARCHAR(5),notafinal REAL,PRIMARY KEY(carnet,codmateria,ciclo));"); catch(sqlexception e){ public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { // TODO Auto-generated method stub public void abrir() throws SQLException{ db = DBHelper.getWritableDatabase(); return; public void cerrar(){ DBHelper.close(); public String insertar(alumno alumno){ return null; public String insertar(nota nota){ 18
21 return null; public String insertar(materia materia){ return null; public String actualizar(alumno alumno){ return null; public String actualizar(materia materia){ return null; public String actualizar(nota nota){ return null; public String eliminar(alumno alumno){ return null; public String eliminar(nota nota){ return null; public Alumno consultaralumno(string carnet){ return null; public Materia consultarmateria(string codmateria){ return null; public Nota consultarnota(string carnet, String codmateria, String ciclo){ return null; private boolean verificarintegridad(object dato, int relacion) throws SQLException{ switch(relacion){ 19
22 codigo de materia null, null); null, null, null); case 1: { //verificar que al insertar nota exista carnet del alumno y el Nota nota = (Nota)dato; String[] id1 = {nota.getcarnet(); String[] id2 = {nota.getcodmateria(); //abrir(); Cursor cursor1 = db.query("alumno", null, "carnet =?", id1, null, Cursor cursor2 = db.query("materia", null, "codmateria =?", id2, if(cursor1.movetofirst() && cursor2.movetofirst()){ //Se encontraron datos return true; return false; case 2: { //verificar que al modificar nota exista carnet del alumno, el codigo de materia y el ciclo Nota nota1 = (Nota)dato; String[] ids = {nota1.getcarnet(), nota1.getcodmateria(), nota1.getciclo(); abrir(); Cursor c = db.query("nota", null, "carnet =? AND codmateria =? AND ciclo =?", ids, null, null, null); if(c.movetofirst()){ //Se encontraron datos return true; return false; case 3: { Alumno alumno = (Alumno)dato; Cursor c=db.query(true, "nota", new String[] { "carnet", "carnet='"+alumno.getcarnet()+"'",null, null, null, null, null); if(c.movetofirst()) return true; else return false; case 4: { Materia materia = (Materia)dato; Cursor cmat=db.query(true, "nota", new String[] { "codmateria", "codmateria='"+materia.getcodmateria()+"'",null, null, null, null, null); if(cmat.movetofirst()) 20
23 return true; else return false; null); null, null); case 5: { //verificar que exista alumno Alumno alumno2 = (Alumno)dato; String[] id = {alumno2.getcarnet(); abrir(); Cursor c2 = db.query("alumno", null, "carnet =?", id, null, null, if(c2.movetofirst()){ //Se encontro Alumno return true; return false; case 6: { //verificar que exista Materia Materia materia2 = (Materia)dato; String[] idm = {materia2.getcodmateria(); abrir(); Cursor cm = db.query("materia", null, "codmateria =?", idm, null, if(cm.movetofirst()){ //Se encontro Materia return true; return false; default: return false; public String llenarbdcarnet(){ final String[] VAcarnet = {"OO12035","OF12044","GG11098","CC12021"; final String[] VAnombre = {"Carlos","Pedro","Sara","Gabriela"; final String[] VAapellido = {"Orantes","Ortiz","Gonzales","Coto"; final String[] VAsexo = {"M","M","F","F"; final String[] VMcodmateria = {"MAT115","PRN115","IEC115","TSI115"; final String[] VMnommateria = {"Matematica I","Programacion I","Ingenieria Economica","Teoria de Sistemas"; final String[] VMunidadesval = {"4","4","4","4"; 21
24 final String[] VNcarnet = {"OO12035","OF12044","GG11098","CC12021","OO12035","GG11098","OF12044"; final String[] VNcodmateria = {"MAT115","PRN115","IEC115","TSI115","IC115","MAT115","PRN115"; final String[] VNciclo = {"1","1","2","2","2","1","2"; final float[] VNnotafinal = {7,5,8,7,6,10,7; abrir(); db.execsql("delete FROM alumno"); db.execsql("delete FROM materia"); db.execsql("delete FROM nota"); Alumno alumno = new Alumno(); for(int i=0;i<4;i++){ alumno.setcarnet(vacarnet[i]); alumno.setnombre(vanombre[i]); alumno.setapellido(vaapellido[i]); alumno.setsexo(vasexo[i]); alumno.setmatganadas(0); insertar(alumno); Materia materia = new Materia(); for(int i=0;i<4;i++){ materia.setcodmateria(vmcodmateria[i]); materia.setnommateria(vmnommateria[i]); materia.setunidadesval(vmunidadesval[i]); insertar(materia); Nota nota = new Nota(); for(int i=0;i<7;i++){ nota.setcarnet(vncarnet[i]); nota.setcodmateria(vncodmateria[i]); nota.setciclo(vnciclo[i]); nota.setnotafinal(vnnotafinal[i]); insertar(nota); Observación: cerrar(); return "Guardo Correctamente"; Todo lo que respecta al método verificarintegridad se refiere a verificar la Integridad de los datos dentro de la base de datos de manera programática, ya que dentro de la base de datos automáticamente no se puede realizar por lo cual es necesario cumplir con la leyes de integridad y de esta manera los datos insertados pueden ser considerados válidos. Hasta este momento existen 12 métodos que no hemos implementado (insertar, eliminar, cosultar, actualizar), estos son los que modificaremos a medida avancemos en la práctica. Ahora si podremos implementar la opción Llenar Base de Datos del menú principal. Modifica la clase BaseDatosCarnetActivity.java debe ser de la siguiente manera: 22
25 package sv.ues.fia.basedatoscarnet; import android.app.listactivity; import android.content.intent; import android.os.bundle; import android.view.view; import android.widget.arrayadapter; import android.widget.listview; import android.widget.toast; public class BaseDatosCarnetActivity extends ListActivity { String[] menu={"tabla Alumno","Tabla Nota","Tabla Materia","LLenar Base de Datos"; String[] activities={"alumnomenuactivity","notamenuactivity","materiamenuactivity"; ControlBDCarnet public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setlistadapter(new ArrayAdapter<String>(this, android.r.layout.simple_list_item_1, menu)); BDhelper=new protected void onlistitemclick(listview l,view v,int position,long id){ super.onlistitemclick(l, v, position, id); if(position!=3){ else{ String nombrevalue=activities[position]; try{ Class<?> clase=class.forname("sv.ues.fia.basedatoscarnet."+nombrevalue); Intent inte = new Intent(this,clase); this.startactivity(inte); catch(classnotfoundexception e){ e.printstacktrace(); BDhelper.abrir(); String tost=bdhelper.llenarbdcarnet(); BDhelper.cerrar(); Toast.makeText(this, tost, Toast.LENGTH_SHORT).show(); 23
26 PROGRAMACION DE LOS LAYOUTS Y ACTIVITIES POR TABLA TablaAlumno Método insertar (Alumno) En esta parte veremos como insertar algún alumno de nuestra base de datos y para ello modificamos el método que se presenta a continuación de nuestra clase ControlDBCarnet.java public String insertar(alumno alumno){ String reginsertados="registro Insertado Nº= "; long contador=0; ContentValues alum = new ContentValues(); alum.put("carnet", alumno.getcarnet()); alum.put("nombre", alumno.getnombre()); alum.put("apellido", alumno.getapellido()); alum.put("sexo", alumno.getsexo()); alum.put("matganadas", alumno.getmatganadas()); contador=db.insert("alumno", null, alum); if(contador==-1 contador==0) { reginsertados= "Error al Insertar el registro, Registro Duplicado. Verificar inserción"; else { reginsertados=reginsertados+contador; return reginsertados; Observación: La variable contador es la que nos permite verificar si el registro se ha insertado; ya que al realizar la operación db.insert () regresa el valor del registro ingresado es decir la nueva fila que ha sido ingresada a la base de datos. El siguiente paso es modificar la interfaz de usuario con el nombre activity_alumno_insertar xml para mostrar los datos de la tabla Alumno. <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android=" android:layout_width="fill_parent" android:paddingtop="30dip" android:stretchcolumns="1" > 24
27 <TableRow> <TextView <EditText android:inputtype="text" android:maxlength="7" /> </TableRow> <TableRow> <TextView /> <EditText android:inputtype="text" android:maxlength="30" /> </TableRow> <TableRow> <TextView /> <EditText android:inputtype="text" android:maxlength="30" /> </TableRow> <TableRow> <TextView /> <EditText android:inputtype="text" android:maxlength="1" /> </TableRow> <TableRow> <TextView /> </TableRow> <TableRow> <Button android:onclick="insertaralumno" /> <Button android:onclick="limpiartexto" /> </TableRow> </TableLayout> 25
28 Luego modificaremos la clase llamada AlumnoInsertarActivity.java dentro de nuestro paquete, y agregamos el siguiente código: package sv.ues.fia.basedatoscarnet; import android.app.activity; import android.os.bundle; import android.view.view; import android.widget.edittext; import android.widget.toast; public class AlumnoInsertarActivity extends Activity { ControlBDCarnet helper; EditText editcarnet; EditText editnombre; EditText editapellido; EditText editsexo; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_alumno_insertar); helper = new ControlBDCarnet(this); editcarnet = (EditText) findviewbyid(r.id.editcarnet); editnombre = (EditText) findviewbyid(r.id.editnombre); editapellido = (EditText) findviewbyid(r.id.editapellido); editsexo = (EditText) findviewbyid(r.id.editsexo); public void insertaralumno(view v) { String carnet=editcarnet.gettext().tostring(); String nombre=editnombre.gettext().tostring(); String apellido=editapellido.gettext().tostring(); String sexo=editsexo.gettext().tostring(); String reginsertados; Alumno alumno=new Alumno(); alumno.setcarnet(carnet); alumno.setnombre(nombre); alumno.setapellido(apellido); alumno.setsexo(sexo); alumno.setmatganadas(0); helper.abrir(); reginsertados=helper.insertar(alumno); helper.cerrar(); Toast.makeText(this, reginsertados, Toast.LENGTH_SHORT).show(); public void limpiartexto(view v) { editcarnet.settext(""); editnombre.settext(""); editapellido.settext(""); editsexo.settext(""); 26
29 Observaciones: La variable reginsertados es la que almacena la posición de la nueva fila insertada dentro de la base de datos es decir el nuevo registro junto con el String mensaje, el cual menciona si el registro es insertado correctamente o no y posteriormente es mostrado en el Toast. Esta misma secuencia es la que se coloca tanto para insertar nota como para realizar la inserción de materia. Método consultar(alumno) En esta parte veremos como consultar algún alumno de nuestra base de datos y para ello agregaremos el siguiente código en el método correspondiente en la clase ControlDBCarnet.java public Alumno consultaralumno(string carnet){ String[] id = {carnet; Cursor cursor = db.query("alumno", camposalumno, "carnet =?", id, null, null, null); if(cursor.movetofirst()){ Alumno alumno = new Alumno(); alumno.setcarnet(cursor.getstring(0)); alumno.setnombre(cursor.getstring(1)); alumno.setapellido(cursor.getstring(2)); alumno.setsexo(cursor.getstring(3)); alumno.setmatganadas(cursor.getint(4)); return alumno; else{ return null; Observaciones: Para consultar algún alumno el único parámetro q necesitamos mandarle es su respectivo carnet, para ello utilizamos una variable de tipo Cursor la cual nos ayudara a extraer cada uno de los campos del objeto Alumno. Lo siguiente será modificar el archivo activity_alumno_consultar.xml dentro de la carpeta Layout y agregamos el siguiente código: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <TextView android:layout_width="wrap_content" 27
30 <EditText android:layout_width="200dp" android:inputtype="text" android:maxlength="7"/> <LinearLayout android:layout_width="fill_parent" > <Button android:layout_width="wrap_content" android:onclick="consultaralumno"/> <Button android:layout_width="wrap_content" android:onclick="limpiartexto"/> </LinearLayout> <TextView android:layout_width="wrap_content" /> <EditText android:layout_width="fill_parent" android:inputtype="text" android:enabled ="false" android:focusable="false" android:focusableintouchmode="false" android:cursorvisible="false" android:longclickable="false" /> <TextView android:layout_width="wrap_content" /> <EditText android:layout_width="fill_parent" 28
31 android:inputtype="text" android:enabled="false" android:focusable="false" android:focusableintouchmode="false" android:cursorvisible="false" android:longclickable="false"/> <TextView android:layout_width="wrap_content" /> <EditText android:layout_width="100dp" android:inputtype="text" android:enabled ="false" android:focusable="false" android:focusableintouchmode="false" android:cursorvisible="false" android:longclickable="false" /> <TextView android:layout_width="wrap_content" /> <EditText android:layout_width="100dp" android:inputtype="text" android:enabled ="false" android:focusable="false" android:focusableintouchmode="false" android:cursorvisible="false" android:longclickable="false" /> </LinearLayout> Ahora modificamos la clase llamada AlumnoConsultarActivity.java dentro de nuestro paquete y le agregamos el siguiente código: package sv.ues.fia.basedatoscarnet; import android.app.activity; import android.os.bundle; import android.view.view; import android.widget.edittext; import android.widget.toast; public class AlumnoConsultarActivity extends Activity { ControlBDCarnet helper; 29
32 EditText editcarnet; EditText editnombre; EditText editapellido; EditText editsexo; EditText editmatganadas; /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_alumno_consultar); helper = new ControlBDCarnet(this); editcarnet = (EditText) findviewbyid(r.id.editcarnet); editnombre = (EditText) findviewbyid(r.id.editnombre); editapellido = (EditText) findviewbyid(r.id.editapellido); editsexo = (EditText) findviewbyid(r.id.editsexo); editmatganadas = (EditText) findviewbyid(r.id.editmatganadas); public void consultaralumno(view v) { helper.abrir(); Alumno alumno = helper.consultaralumno(editcarnet.gettext().tostring()); helper.cerrar(); if(alumno == null) Toast.makeText(this, "Alumno con carnet " + editcarnet.gettext().tostring() + " no encontrado", Toast.LENGTH_LONG).show(); else{ editnombre.settext(alumno.getnombre()); editapellido.settext(alumno.getapellido()); editsexo.settext(alumno.getsexo()); editmatganadas.settext(string.valueof(alumno.getmatganadas())); public void limpiartexto(view v){ editcarnet.settext(""); editnombre.settext(""); editapellido.settext(""); editsexo.settext(""); editmatganadas.settext(""); 30
33 Método actualizar (Alumno) En esta sección veremos como modificar o actualizar datos almacenados en nuestra tabla Alumno, para ello agregamos el siguiente código en el método correspondiente a nuestra clase ControlDBCarnet.java public String actualizar(alumno alumno){ existe"; if(verificarintegridad(alumno, 5)){ String[] id = {alumno.getcarnet(); ContentValues cv = new ContentValues(); cv.put("nombre", alumno.getnombre()); cv.put("apellido", alumno.getapellido()); cv.put("sexo", alumno.getsexo()); db.update("alumno", cv, "carnet =?", id); return "Registro Actualizado Correctamente"; else{ return "Registro con carnet " + alumno.getcarnet() + " no Observaciones: Para modificar datos de la basa hacemos uso del método update(nombre_tabla_a_modificar, valores_a_modificar, sentencia_where, parámetros_sentencia_where), el uso del signo (?) dentro de la sentencia where especifica que aquí se colocara un valor de los que se establezcan en los parámetros del where. El siguiente paso ahora será crear el archivo activity_alumno_ actualizar.xml dentro de la carpeta Layout de nuestro proyecto, la cual contendrá el siguiente código: <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android=" android:layout_width="fill_parent" android:paddingtop="10dip" android:stretchcolumns="1" > <TableRow> <TextView android:text="@string/carnet" /> <EditText android:id="@+id/editcarnet" android:inputtype="text" android:maxlength="7" /> </TableRow> <TableRow> <TextView android:text="@string/nombre" /> 31
34 <EditText android:inputtype="text" android:maxlength="30" /> </TableRow> <TableRow> <TextView /> <EditText android:inputtype="text" android:maxlength="30" /> </TableRow> <TableRow> <TextView /> <EditText android:inputtype="text" android:maxlength="1" /> </TableRow> <TableRow> <Button android:onclick="actualizaralumno" /> </TableRow> <TableRow> <Button android:onclick="limpiartexto" /> </TableRow> </TableLayout> 32
35 Luego modificamos la clase llamada AlumnoActualizarActivity.java dentro de nuestro paquete, y agregamos el siguiente código: package sv.ues.fia.basedatoscarnet; import android.os.bundle; import android.app.activity; import android.view.view; import android.widget.edittext; import android.widget.toast; public class AlumnoActualizarActivity extends Activity { ControlBDCarnet helper; EditText editcarnet; EditText editnombre; EditText editapellido; EditText editsexo; /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_alumno_actualizar); helper = new ControlBDCarnet(this); editcarnet = (EditText) findviewbyid(r.id.editcarnet); editnombre = (EditText) findviewbyid(r.id.editnombre); editapellido = (EditText) findviewbyid(r.id.editapellido); editsexo = (EditText) findviewbyid(r.id.editsexo); public void actualizaralumno(view v) { Alumno alumno = new Alumno(); alumno.setcarnet(editcarnet.gettext().tostring()); alumno.setnombre(editnombre.gettext().tostring()); alumno.setapellido(editapellido.gettext().tostring()); alumno.setsexo(editsexo.gettext().tostring()); helper.abrir(); String estado = helper.actualizar(alumno); helper.cerrar(); Toast.makeText(this, estado, Toast.LENGTH_SHORT).show(); public void limpiartexto(view v) { editcarnet.settext(""); editnombre.settext(""); editapellido.settext(""); editsexo.settext(""); 33
36 Método eliminar (Alumno) Modificaremos ahora el método eliminar(alumno) por lo que agregaremos este código donde corresponde en la clase ControlDBCarnet.java public String eliminar(alumno alumno){ String regafectados="filas afectadas= "; int contador=0; if (verificarintegridad(alumno,3)) { regafectados="0"; //aplica para cascada //borrar registros de notas //contador+=db.delete("nota", "carnet='"+alumno.getcarnet()+"'", null); else { //borrar los registros de alumno contador+=db.delete("alumno", "carnet='"+alumno.getcarnet()+"'", null); Observación: regafectados+=contador; return regafectados; Podemos ver que en este caso, la cláusula WHERE la construimos completamente sin usar argumentos como en el caso de modificar(alumno), y utilizamos un contador para acumular los valores de retorno del método delete(), el cual regresa el número de filas eliminadas en la acción. Además, ya que debemos respetar la integridad referencial, antes de eliminar de la tabla Alumno debemos eliminar todos los datos que hagan referencia al Alumno en cuestión dela tabla Nota. Crea un nuevo layout con el nombre activity_alumno_eliminar.xml que usaremos como interfaz para eliminar de la tabla Alumno. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:layout_width="wrap_content" android:text="@string/carnet" /> <EditText android:id="@+id/editcarnet" android:layout_width="fill_parent" 34
37 android:inputtype="text" android:maxlength="7"/> <Button android:layout_width="wrap_content" android:onclick="eliminaralumno"/> </LinearLayout> Para eliminar un Alumno solo haremos uso del Carnet, por lo que definimos un solo EditText editable hasta 7 caracteres. Luego modificaremos la clase llamada AlumnoEliminarActivity.java dentro de nuestro paquete, y agregamos el siguiente código: package sv.ues.fia.basedatoscarnet; import android.app.activity; import android.os.bundle; import android.view.view; import android.widget.edittext; import android.widget.toast; public class AlumnoEliminarActivity extends Activity { EditText editcarnet; ControlBDCarnet public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_alumno_eliminar); controlhelper=new ControlBDCarnet (this); editcarnet=(edittext)findviewbyid(r.id.editcarnet); public void eliminaralumno(view v){ String regeliminadas; Alumno alumno=new Alumno(); alumno.setcarnet(editcarnet.gettext().tostring()); controlhelper.abrir(); regeliminadas=controlhelper.eliminar(alumno); controlhelper.cerrar(); Toast.makeText(this, regeliminadas, Toast.LENGTH_SHORT).show(); 35
38 Correr el Programa por primera vez Debido a que se ha considerado un método de llenado de Base de datos previo a la utilización de la aplicacion, si se desea probar los modulos del alumno en este momento se deberán actualizar los métodos sobrecargados de insertar(materia) e insertar(nota) para poder ejecutar el Metodo llenarbdcarnet().ver Anexo 1 Con lo anterior tienes ya el mantenimiento completo de la tabla de alumno. Guarda el proyecto y ejecútalo, en el menú principal, por ser la primera vez que se ejecuta, corre la opcion Llenar Base de Datos.Para ver datos de muestra. 36
39 Copiar Base de Datos inicial y ver su contenido Sin cancelar la ejecución de su proyecto, entre al eclipse en la perspectiva de DDMS ya que actualmente debe estar en la de JAVA Dentro de la ventana DDMS, esperar a que carque por completo la aplicación y presionar clic en el emulador, luego clic en la carpeta data del File explorer. Expandir la otra carpeta data Buscar el paquete del proyecto y expandirlo hasta entrar en la carpeta databases, luego presionar clic en alumno3.s3db 37
40 Teniendo seleccionado el archivo de bdd, presionar clic en el icono de pull a file into device Luego ubica el archivo en una carpeta llamada datos_carnet o en otra carpeta que tengas acceso Usa el SQLite administrator para ver el estado actual de la base de datos. 38
41 Probar opciones hechas para la tabla Alumnos desde el simulador Luego haz una prueba completa de las opciones de Alumno, Entra a insertar, pon tus datos y presiona insertar, luego, consulta tus datos, después Actualiza uno de tus datos a excepción del carnet (llave), vuelve a consultar tus datos, luego elimina el registro y vuelve a consultarlo. 39
42 Ver el contenido de la tabla Alumno de nuevo Renombra la copia del archivo alumno.s3db y ponle alumnoini.s3db para mantener una copia de los datos iniciales de la base de datos. Luego, asi como se hizo anteriormente, haz una nueva una copia de la base de alumno.s3db (desde DDMS), revisa que los datos coincidan con los que vas modificando. Al verificar estos datos, retorne a la perspectiva JAVA, para continuar. 40
43 TABLA NOTA Método insertar (Nota) Programación en Dispositivos Móviles Universidad De El Salvador En esta parte veremos como insertar alguna nota de nuestra base de datos y para ello agregaremos el siguiente código en el metodo correspondiente en la clase ControlDBCarnet.java Nota: si ya se hizo este método, pase a modificar el layout public String insertar(nota nota){ String reginsertados="registro Insertado Nº= "; long contador=0; if(verificarintegridad(nota,1)) { ContentValues notas = new ContentValues(); notas.put("carnet", nota.getcarnet()); notas.put("codmateria", nota.getcodmateria()); notas.put("ciclo", nota.getciclo()); notas.put("notafinal", nota.getnotafinal()); contador=db.insert("nota", null, notas); if(contador==-1 contador==0) { reginsertados= "Error al Insertar el registro, Registro Duplicado. Verificar inserción"; else { reginsertados=reginsertados+contador; Observación: return reginsertados; Es necesario realizar la validación del registro de alumno y del código de materia de manera que se verifique que exista un carnet y el código de materia a insertar dentro de la tabla alumno y materia. En este caso la validación queda planteada pero es necesario que el estudiante realice el método insertar de materia para que dicho código implementado no le de error o no lo deje insertar ningún tipo de nota al no existir la materia a la cual hace referencia. Por lo demás sigue la misma secuencia descrita en InsertarAlumno. El siguiente paso es modificar la interfaz de usuario con el nombre activity_nota_insertar.xml para insertar a la tabla Nota. 41
44 <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android=" android:layout_width="fill_parent" android:paddingtop="10dip" android:stretchcolumns="1" > <TableRow> <TextView <EditText android:inputtype="text" android:maxlength="7" /> </TableRow> <TableRow> <TextView /> <EditText android:inputtype="text" android:maxlength="6" /> </TableRow> <TableRow> <TextView /> <EditText android:inputtype="number" android:maxlength="1" /> </TableRow> <TableRow> <TextView /> <EditText android:inputtype="text" android:maxlength="4" /> </TableRow> <TableRow> <TextView /> </TableRow> <TableRow> <Button android:onclick="insertarnota" /> <Button android:onclick="limpiartexto" /> </TableRow> </TableLayout> 42
45 Luego modificaremos la clase llamada NotaInsertarActivity.java dentro de nuestro paquete, y agregamos el siguiente código: package sv.ues.fia.basedatoscarnet; import android.app.activity; import android.os.bundle; import android.view.view; import android.widget.edittext; import android.widget.toast; public class NotaInsertarActivity extends Activity { ControlBDCarnet helper; EditText editcarnet; EditText editcodmateria; EditText editciclo; EditText editnotafinal; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_nota_insertar); helper = new ControlBDCarnet(this); editcarnet = (EditText) findviewbyid(r.id.editcarnet); editcodmateria = (EditText) findviewbyid(r.id.editcodmateria); editciclo = (EditText) findviewbyid(r.id.editciclo); editnotafinal = (EditText) findviewbyid(r.id.editnotafinal); public void insertarnota(view v) { String reginsertados; String carnet=editcarnet.gettext().tostring(); String codmateria=editcodmateria.gettext().tostring(); String ciclo=editciclo.gettext().tostring(); Float notafinal=float.valueof(editnotafinal.gettext().tostring()); Nota nota= new Nota(); nota.setcarnet(carnet); nota.setcodmateria(codmateria); nota.setciclo(ciclo); nota.setnotafinal(notafinal); helper.abrir(); reginsertados=helper.insertar(nota); helper.cerrar(); Toast.makeText(this, reginsertados, Toast.LENGTH_SHORT).show(); public void limpiartexto(view v) { editcarnet.settext(""); editcodmateria.settext(""); editciclo.settext(""); editnotafinal.settext(""); 43
46 Método consultar (Nota) Agregamos el siguiente código al método consultarnota dentro de la clase ControlBDCarnet.java: public Nota consultarnota(string carnet, String codmateria, String ciclo){ String[] id = {carnet, codmateria, ciclo; Cursor cursor = db.query("nota", camposnota, "carnet =? AND codmateria =? AND ciclo =?", id, null, null, null); if(cursor.movetofirst()){ Nota nota = new Nota(); nota.setcarnet(cursor.getstring(0)); nota.setcodmateria(cursor.getstring(1)); nota.setciclo(cursor.getstring(2)); nota.setnotafinal(cursor.getfloat(3)); return nota; else{ return null; Observaciones: Para realizar nuestra consulta a este método le mandamos como parámetros el carnet del alumno, el código de la materia q deseamos conocer su nota y el ciclo respectivo. Igualmente utilizamos una variable de tipo Cursor para extraer cada uno de los datos del objeto Nota. Ahora dentro de la carpeta Layout modificamos el archivo activity_nota_consulta.xml y le agregamos el siguiente código: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="wrap_content" android:text="@string/carnet"/> <EditText android:id="@+id/editcarnet" android:layout_width="200dp" android:inputtype="text" android:maxlength="7"/> <TextView android:layout_width="wrap_content" android:text="@string/codmateria"/> 44
47 <EditText android:layout_width="100dp" android:inputtype="text" android:maxlength="7"/> <TextView android:layout_width="wrap_content" /> <EditText android:layout_width="100dp" android:inputtype="number" android:maxlength="5"/> <LinearLayout android:layout_width="fill_parent" > <Button android:layout_width="wrap_content" android:onclick="consultarnota"/> <Button android:layout_width="wrap_content" android:onclick="limpiartexto"/> </LinearLayout> <TextView android:layout_width="wrap_content" /> <EditText android:layout_width="100dp" android:inputtype="text" android:enabled ="false" android:focusable="false" android:focusableintouchmode="false" android:cursorvisible="false" android:longclickable="false" /> 45
48 </LinearLayout> Luego de esto modificaremos nuestra clase NotaConsultarActivity.java y agregamos lo siguiente: package sv.ues.fia.basedatoscarnet; import android.app.activity; import android.os.bundle; import android.view.view; import android.widget.edittext; import android.widget.toast; public class NotaConsultarActivity extends Activity { ControlBDCarnet helper; EditText editcarnet; EditText editcodmateria; EditText editciclo; EditText editnotafinal; /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_nota_consultar); helper = new ControlBDCarnet(this); editcarnet = (EditText) findviewbyid(r.id.editcarnet); editcodmateria = (EditText) findviewbyid(r.id.editcodmateria); editciclo = (EditText) findviewbyid(r.id.editciclo); editnotafinal = (EditText) findviewbyid(r.id.editnotafinal); public void consultarnota(view v) { helper.abrir(); Nota nota = helper.consultarnota(editcarnet.gettext().tostring(), editcodmateria.gettext().tostring(), editciclo.gettext().tostring()); helper.cerrar(); if(nota == null) Toast.makeText(this, "Nota no registrada", Toast.LENGTH_LONG).show(); else{ editnotafinal.settext(string.valueof(nota.getnotafinal())); public void limpiartexto(view v) { editcarnet.settext(""); editcodmateria.settext(""); editciclo.settext(""); editnotafinal.settext(""); 46
49 Método actualizar (Nota) Agregamos el siguiente código al método actualizarnota dentro de la clase ControlBDCarnet.java: public String actualizar(nota nota){ if(verificarintegridad(nota, 2)){ String[] id = {nota.getcodmateria(), nota.getcarnet(), nota.getciclo(); ContentValues cv = new ContentValues(); cv.put("notafinal", nota.getnotafinal()); db.update("nota", cv, "codmateria =? AND carnet =? AND ciclo =?", id); return "Registro Actualizado Correctamente"; else{ return "Registro no Existe"; Observaciones: De igual manera que en actualizaralumno se utiliza el método update para modificar los valores existentes dentro de la base. En este caso verificamos que los valores de codmateria, carnet y ciclo ya se encuentren registrados y asignarle un nuevo valor a notafinal. Ahora modificamos a nuestra carpeta Layout el archivo activity_nota_actualizar.xml con el siguiente código. <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android=" android:layout_width="fill_parent" android:paddingtop="10dip" android:stretchcolumns="1" > <TableRow> <TextView android:text="@string/carnet" /> <EditText android:id="@+id/editcarnet" android:inputtype="text" android:maxlength="7" /> </TableRow> <TableRow> <TextView android:text="@string/codmatnota" /> 47
50 <EditText android:inputtype="text" android:maxlength="6" /> </TableRow> <TableRow> <TextView /> <EditText android:inputtype="text" android:maxlength="5" /> </TableRow> <TableRow> <TextView /> <EditText android:inputtype="numberdecimal" /> </TableRow> <TableRow> <Button android:onclick="actualizarnota" /> </TableRow> <TableRow> <Button android:onclick="limpiartexto" /> </TableRow> </TableLayout> Por ultimo modificamos la clase NotaActualizarActivity.java como se muestra a continuación: package sv.ues.fia.basedatoscarnet; import android.app.activity; import android.os.bundle; import android.view.view; import android.widget.edittext; import android.widget.toast; public class NotaActualizarActivity extends Activity { ControlBDCarnet helper; 48
51 EditText editcarnet; EditText editcodigo; EditText editciclo; EditText editnota; /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_nota_actualizar); helper = new ControlBDCarnet(this); editcarnet = (EditText) findviewbyid(r.id.editcarnet); editcodigo = (EditText) findviewbyid(r.id.editcodigo); editciclo = (EditText) findviewbyid(r.id.editciclo); editnota = (EditText) findviewbyid(r.id.editnota); public void actualizarnota(view v) { Nota nota = new Nota(); nota.setcarnet(editcarnet.gettext().tostring()); nota.setcodmateria(editcodigo.gettext().tostring()); nota.setciclo(editciclo.gettext().tostring()); nota.setnotafinal(float.valueof(editnota.gettext().tostring())); helper.abrir(); String estado = helper.actualizar(nota); helper.cerrar(); Toast.makeText(this, estado, Toast.LENGTH_SHORT).show(); public void limpiartexto(view v) { editcarnet.settext(""); editcodigo.settext(""); editciclo.settext(""); editnota.settext(""); Método eliminar (Nota) Modificaremos ahora el método eliminar (Nota) por lo que agregaremos este código donde corresponde en la clase ControlDBCarnet.java public String eliminar(nota nota){ String regafectados="filas afectadas= "; int contador=0; String where="carnet='"+nota.getcarnet()+"'"; where=where+" AND codmateria='"+nota.getcodmateria()+"'"; where=where+" AND ciclo="+nota.getciclo(); contador+=db.delete("nota", where, null); regafectados+=contador; return regafectados; 49
52 Observación: Para eliminar una nota de una materia de un alumno especifico, construimos la cláusula WHERE indicando el carnet, codmateria y ciclo que hacen referencia a ella. Modificar el layout con el nombre eliminar_nota.xml que usaremos como interfaz para eliminar registros de la tabla Nota. <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android=" android:layout_width="fill_parent" android:layout_height="match_parent" android:stretchcolumns="1" android:paddingtop="4dip" > <TableRow > <TextView android:layout_width="wrap_content" android:text="@string/carnet"/> <EditText android:id="@+id/editcarnet" android:layout_width="fill_parent" android:inputtype="text" android:maxlength="7"/> </TableRow> <TableRow> <TextView android:layout_width="wrap_content" android:text="@string/codmatnota"/> <EditText android:id="@+id/editcodmateria" android:layout_width="fill_parent" android:inputtype="text" android:maxlength="6"/> </TableRow> <TableRow> <TextView android:layout_width="wrap_content" android:text="@string/ciclo"/> <EditText android:id="@+id/editciclo" android:layout_width="fill_parent" android:inputtype="number" android:maxlength="1"/> 50
53 </TableRow> <TableRow> <Button android:layout_width="wrap_content" android:onclick="eliminarnota"/> <Button android:layout_width="wrap_content" android:onclick="limpiar"/> </TableRow> </TableLayout> Podemos ver en el XML que usaremos tres EditText donde se le pedirá al usuario ingresar el carnet, el código de materia y el ciclo para el cual se quiere eliminar la nota. Luego modificaremos la nueva clase llamada EliminarNotaActivity.java dentro de nuestro paquete, y agregamos el siguiente código: package sv.ues.fia.basedatoscarnet; import android.app.activity; import android.os.bundle; import android.view.view; import android.widget.edittext; import android.widget.toast; public class NotaEliminarActivity extends Activity { EditText editcarnet,editcodmateria,editciclo; ControlBDCarnet public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_nota_eliminar); controlhelper=new ControlBDCarnet(this); editcarnet=(edittext)findviewbyid(r.id.editcarnet); editcodmateria=(edittext)findviewbyid(r.id.editcodmateria); editciclo=(edittext)findviewbyid(r.id.editciclo); public void eliminarnota(view v){ String regeliminadas; Nota nota=new Nota(); nota.setcarnet(editcarnet.gettext().tostring()); nota.setcodmateria(editcodmateria.gettext().tostring()); nota.setciclo(editciclo.gettext().tostring()); controlhelper.abrir(); regeliminadas=controlhelper.eliminar(nota); controlhelper.cerrar(); Toast.makeText(this, regeliminadas, Toast.LENGTH_SHORT).show(); 51
54 public void limpiar(view v){ editcarnet.settext(""); editcodmateria.settext(""); editciclo.settext(""); Guarda el proyecto y ejecútalo, en el menú selecciona la tabla Nota. Deberías ver algo como esto al ingresar a las cuatro operaciones Insertar, Consultar, Modificar y Eliminar respectivamente, 52
55 Puedes probarlo, introduce primero el alumno(con tu carnet en la tabla Alumno), luego introduce la nota ficticia de 4, de la asignatuta MAT115, CICLO 1, consultala, actualizala a 7 de nota, vuelve a consultarla y por ultimo eliminala Puedes monitorear los cambios también con SQLITEAdministrator 53
56 Adicionalmente: Programación en Dispositivos Móviles Universidad De El Salvador Completar la parte de la base de datos enfocada en la tabla Materia y realizar los métodos de inserción, eliminación, consulta y modificación. Ocupar la interfaz de usuario respectiva y agregarle a la aplicación todas las vistas que hagan referencia a dicha tabla. Cuidar de realizar la integridad de la base de datos usando siempre el método verificarintegridad. Y agregar todos los métodos necesarios en la clase ControlBDCarnet. Realizar todas las modificaciones que sean pertinentes. Al finalizar envía el proyecto a la opcion desubida de proyecto guía 4 en elaula virtual, este debe contener solamente el proyecto BaseDatosCarnet concluido(con tabla materia) y comprimido. Ejercicio Complementario opcional Realiza la implementación de la siguiente base de datos, con lo que ya conoces: Modelo Físico 54
57 Anexos Anexo 1 métodos sobrecargados de inserción para ambas clases. Insetar( Materia) public String insertar(materia materia){ String reginsertados="registro Insertado Nº= "; long contador=0; ContentValues mat = new ContentValues(); mat.put("codmateria", materia.getcodmateria()); mat.put("nommateria", materia.getnommateria()); mat.put("unidadesval", materia.getunidadesval()); contador=db.insert("materia", null, mat); Insetar( Nota) if(contador==-1 contador==0) { reginsertados= "Error al Insertar el registro, Registro Duplicado. Verificar inserción"; else { reginsertados=reginsertados+contador; return reginsertados; public String insertar(nota nota){ String reginsertados="registro Insertado Nº= "; long contador=0; ContentValues not = new ContentValues(); not.put("carnet", nota.getcarnet()); not.put("codmateria", nota.getcodmateria()); not.put("ciclo", nota.getciclo()); not.put("notafinal", nota.notafinal()); contador=db.insert("materia", null, mat); if(contador==-1 contador==0) { reginsertados= "Error al Insertar el registro, Registro Duplicado. Verificar inserción"; else { reginsertados=reginsertados+contador; return reginsertados; 55
58 Anexo 2 Datos iniciales Tabla: Alumno Tabla: Materia Tabla: Nota 56
ALMACENAMIENTOS DE DATOS EN ANDROID CON SQLITE
SQLite M.Sc. Reynaldo Zeballos ALMACENAMIENTOS DE DATOS EN ANDROID CON SQLITE En este ejercicio vamos a crear una tabla TELEFONOS para la base de datos GUIATEL. Para lo cual utilizaremos SQLite que viene
Ejercicio 4. Manejo de Layouts en Android. Android Con Java. Ejercicio 4. Manejo de Layouts en Android. Curso de Android con Java
Android Con Java Ejercicio 4 Manejo de Layouts en Android Objetivo del Ejercicio El objetivo del ejercicio es entender el manejo de Layout y los Adaptadores en Android. Al finalizar deberemos observar
Ejercicios - Persistencia en Android: ficheros y SQLite
Ejercicios - Persistencia en Android: ficheros y SQLite Índice 1 Uso de ficheros (0.5 puntos)...2 2 Persistencia con ficheros (0.5 puntos)...3 3 Base de datos: SQLiteOpenHelper (0.5 puntos)... 3 4 Base
www.android-spa.com Android Creación de una aplicación sencilla: Forwarding - Página 1 -
Android Creación de una aplicación sencilla: Forwarding - Página 1 - Realización de la aplicación Forwarding en Android Este es un pequeño tutorial con el que se realizará un pequeño programa para Android
PRACTICAS DE ANDROID 12 - Lanzar un segundo "Activity" y pasar parámetros Problema:
PRACTICAS DE ANDROID 12 - Lanzar un segundo "Activity" y pasar parámetros Hemos visto en el concepto anterior que un programa puede tener más de una ventana representando cada ventana con una clase que
TP Nº4 Android - SQLite Fecha Miércoles 2014/08/29 Profesor: Pablo Ulman (Polshu)
BASES DE DATOS EN ANDROID Soluciones de Almacenamiento de Datos: Shared Preferences: o Datos primitivos privados almacenados con clave/valor Internal Storage: o Almacenamiento interno en la memoria del
SESIÓN 5 MANEJO DE BASES DE DATOS SQLITE
SESIÓN 5 MANEJO DE BASES DE DATOS SQLITE Contenidos Resumen...1 Práctica guiada 7: ListaCompra...1 Implementación de la base de datos...2 Actividad principal: ListaCompraActivity...6 Actividad secundaria:
GUIA DE LABORATORIO N 9 B. (000Webhost Php- Para desarrollar en casa)
GUIA DE LABORATORIO N 9 B (000Webhost Php- Para desarrollar en casa) Objetivo: Crear servicios web utilizando la arquitectura REST, para obtener información desde un servidor web gratuito que se conecta
Programación Android. Alejandro Alcalde. elbauldelprogramador.com
Programación Android Alejandro Alcalde elbauldelprogramador.com Copyright c 2013 Alejandro Alcalde P L A TEX. Programación Android por Alejandro Alcalde se encuentra bajo una Licencia Creative Commons
1.- Creamos un proyecto al que llamaremos MusicaMovil.
Base de datos en Android. (Modelo de la BD) Este ejercicio probablemente parecerá absurdo, pero no pretendo hacer un reproductor de música, sino más bien es un previo para un diccionario de español a maya
Programación Orientada a Objetos con Java
Programación Orientada a Objetos con Java M.C. Jorge Eduardo Ibarra Esquer [email protected] Sobrecarga de métodos Java permite la definición de dos o más métodos que tengan el mismo nombre, dentro de la
Ejercicio 18. Configuración de Widgets en Android. Android Con Java. Ejercicio 18. Configuración de Widgets en Android. Curso de Android con Java
Android Con Java Ejercicio 18 Configuración de Widgets en Android Objetivo del Ejercicio El objetivo del ejercicio crear un Widget que antes de utilizarlo nos permita configurarlo. En este caso, solicitar
Tablas y Campos Nuevos
Tablas y Campos Nuevos Maxicomercio tiene la capacidad para poder agregar tablas y campos nuevos para darle nueva funcionalidad al sistema, los cambios que realice a la estructura de la base de datos podrán
Ejercicios - Persistencia en Android: proveedores de contenidos y SharedPreferences
Ejercicios - Persistencia en Android: proveedores de contenidos y SharedPreferences Índice 1 Compartir datos entre actividades con Shared Preferences (0.75 puntos)... 2 2 Actividad de preferencias (0.75
CODIGO PROYECTO: AppPixelproServicioWeb Proyecto Android - Servicio Web
CODIGO PROYECTO: AppPixelproServicioWeb Proyecto Android - Servicio Web I. Alcances del Proyecto a. Ide Eclipse Indigo 3.7 b. Api 10-17, Versión Android 2.3.3 A 4.2.2 c. Jdk 1.6 II. Conceptos Relacionados
Tema 2: Diseño de servicios para móviles
Tema 2: Diseño de servicios para móviles Listas y menús 2013-2014 Depto. Ciencia de la Computación e IA Puntos a tratar Spinners Listas Adaptadores Menús de opciones Menús contextuales 2 Spinner Cuadro
GUÍA DE TRABAJO N 11 LENGUAJE C# Programación de Software Articulación SENA Grado 10 Ing. Néstor Raúl Suarez Perpiñan Página 2 de 11
Página 1 de 11 GUIA N 11 - DESARROLLO DE SOFTWARE A TRES CAPAS Objetivo: Desarrollar una aplicación de software con tres capas (Presentación Lógica Persistencia) donde se establezca una conexión con una
Ejercicio 20. SQLite en Android. Android Con Java. Ejercicio 20. Uso de SQLite en Android. Curso de Android con Java
Android Con Java Ejercicio 20 Uso de SQLite en Android Objetivo del Ejercicio El objetivo del ejercicio poner en práctica el concepto de SQLite en Android. Al finalizar el ejercicio deberemos poder acceder
http://www.oracle.com/technetwork/es/java/javase/downloads/index.html
Introducción En esta primera parte del taller iremos viendo paso a paso como poner a punto todo tu entorno de trabajo para poder empezar cuanto antes a desarrollar tu primera aplicación Android para luego
MANUAL DE USUARIO CMS- PLONE www.trabajo.gob.hn
MANUAL DE USUARIO CMS- PLONE www.trabajo.gob.hn Tegucigalpa M. D. C., Junio de 2009 Que es un CMS Un sistema de administración de contenido (CMS por sus siglas en ingles) es un programa para organizar
Tutorial Enterprise Architect 7.5 Versión en español
Página 1 de Tutorial Enterprise Architect 7.5 Versión en español Página 2 de Índice Aspectos básicos Vistazo general. 3 Diagrama de Clases.. 4 Atributos 6 Métodos. 10 Relaciones.. 11 Configuración de Opciones
Crear una Activity en Android. Paso por paso
19-03-2014 Crear una Activity en Android. Paso por paso Una breve descripción de qué hacer cuando las herramientas de desarrollo de Android se convierten en nuestros enemigos. A veces, puede pasar que
Manual de uso de la Consola de Administración para usuarios Administradores.
Manual de uso de la Consola de Administración para usuarios Administradores. I. ACCESO A LA CONSOLA DE ADMINISTRACIÓN 1. Para acceder a la consola de administración abra desde Internet Explorer la dirección
Instalación del Admin CFDI
Instalación del Admin CFDI Importante!!!Antes de comenzar verifique los requerimientos de equipo esto podrá verlo en la guía 517 en nuestro portal www.control2000.com.mx en el apartado de soporte, ahí
Android Con Java. Ejercicio 2. Ciclo de Vida de las Actividades en Android. Ejercicio 2. Ciclo de Vida de las Actividades en Android
Android Con Java Ejercicio 2 Ciclo de Vida de las Actividades en Android Objetivo del Ejercicio El objetivo del ejercicio es entender y verificar cada una de las etapas del Ciclo de Vida de las Actividades
GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS
ARCHIVOS ANEXOS Son los documentos, hojas de cálculo o cualquier archivo que se anexa a las carpetas, subcarpetas, hallazgos u otros formularios de papeles de trabajo. Estos archivos constituyen la evidencia
Guí a Ra pida Dropbox.
Guí a Ra pida Dropbox. Software desarrollado para alojar y compartir archivos vía WEB. Ing. Verónica Lisset Nieto Quintanilla [email protected] http://www.veronicalnieto.blogspot.com/ www.vlnieto.wikispaces.com
DOCENTES FORMADORES UGEL 03 PRIMARIA
DOCENTES FORMADORES UGEL 03 PRIMARIA 1. Recursos y Aplicaciones del Servidor La página de inicio del servidor (http://escuela) contiene los enlaces a las aplicaciones instaladas en el servidor, un enlace
Curso de PHP con MySQL Gratis
Curso de PHP con MySQL Gratis Introducción Este mini curso o mini tutorial de PHP le ayudará a realizar cualquier sistema para que pueda insertar uno o varios registros a una base de datos con MySQL, este
API. Administración Portuaria Integral, Veracruz. Manual de Usuario del software para generar la programación de conceptos de Obras...
. Subgerencia de Informática Manual de Usuario del software para generar la programación de conceptos de Obras.......... Administración Portuaria Integral, Veracruz API 1. Introducción. Este manual está
Práctica sobre compartición de instancias remotas.
Práctica sobre compartición de instancias remotas. Para esta práctica se ha construido un pequeño sistema cliente-servidor que permite la resolución de Sudokus entre varios jugadores. El servidor consta
RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA
UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí
Tutorial: Primeros Pasos con Subversion
Tutorial: Primeros Pasos con Subversion Introducción Subversion es un sistema de control de versiones open source. Corre en distintos sistemas operativos y su principal interfaz con el usuario es a través
Ministerio de Educación. Base de datos en la Enseñanza. Open Office. Módulo 5: Report Builder
Ministerio de Educación Base de datos en la Enseñanza. Open Office Módulo 5: Report Builder Instituto de Tecnologías Educativas 2011 Informes con Oracle Report Builder En su configuración original, OpenOffice
SEPARAR Y ADJUNTAR UNA BASE DE DATOS. Separar una base de datos
SEPARAR Y ADJUNTAR UNA BASE DE DATOS Separar una base de datos Al separar una base de datos la está eliminando de la instancia de SQL Server, pero la deja intacta en sus archivos de datos y en los archivos
UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACIÓN
UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACIÓN CICLO: 02/2015 GUIA DE LABORATORIO #11 Nombre de la Práctica: Administración de cursos haciendo uso de Moodle Lugar de Ejecución:
Principales rutinas de mantenimiento en una base de datos Firebird
Principales rutinas de mantenimiento en una base de datos Firebird a) Eliminación de una póliza La eliminación de registros de los distintos catálogos de Aspel-COI, siempre es recomendable hacerla dentro
Tareas básicas en OneNote 2010 Corresponde a: Microsoft Office OneNote 2010
areas básicas en OneNote 2010 - OneNote - Office.com http://office.microsoft.com/es-ar/onenote-help/tareas-basicas-en-onenote... 1 de 3 23/04/2012 10:40 p.m. Soporte / OneNote / Ayuda y procedimientos
AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7
Tutoriales de ayuda e información para todos los niveles AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7 Como agregar a una red existente un equipo con Windows 7 y compartir sus archivos
CARGA MASIVA EMOV 7/1/2013
CARGA MASIVA EMOV 7/1/2013 Tabla de Contenido 1.0 Introducción... 3 Especificaciones del Archivo.... 3 2.0 Carga del Archivo al Servidor... 5 2.1 Errores Posibles... 9 3.0 Generación de Endosos... 13 Verificar
Manual Ingreso Notas y Acta Electrónica
Manual Ingreso Notas y Acta Electrónica ÍNDICE ÍNDICE 2 I. INTRODUCCIÓN 3 II. CREAR LA ESTRUCTURA DE NOTAS PARCIALES (OPCIÓN NOTAS NORMALES) _ 4 III. CREAR LA ESTRUCTURA DE NOTA FINAL (OPCIÓN NOTAS CALCULADAS)
El lenguaje de manipulación de datos (DML) es una parte fundamental de SQL.
GUIA DE LABORATORIO # 5 Nombre de la Practica: Manipulación de datos Lugar de ejecución: Centro de Computo MATERIA: Base de Datos II CICLO: 02-2012 I. OBJETIVOS ESPECIFICOS Qué el estudiante: Manipule
Presentaciones compartidas con Google Docs (tutorial)
Presentaciones compartidas con Google Docs (tutorial) G oogle Docs es una muy sencilla suite ofimática online que nos permite crear nuevos documentos, planillas de cálculo y presentaciones multimedia,
Nota: Se puede tener un acceso directo definido o podemos entrar a través de la
Objetivo: explotar la información eventual en línea, utilizando libros y hojas con una estructura inicial con opción a modificarse de acuerdo a la necesidad del usuario. Después de haber instalado la herramienta
Aviso Legal El presente libro electrónico se distribuye bajo Attribution-NonCommercial- NoDerivs 3.0 Unported
PROGRAMACIÓN ORIENTADA A OBJETOS APLICADA A BASES DE DATOS Por LAURA NOUSSAN LETTRY BrowserSQL MySQL Workbench en Linux (Abril 2015, Mendoza) Aviso Legal El presente libro electrónico se distribuye bajo
Office Online Office Online
Office Online Office Online permite ver, crear y editar documentos de Office en un explorador compatible desde cualquier lugar donde tengamos conexión a Internet, aun cuando no tengamos Office instalado
ESTÁNDAR DESEMPEÑO BÁSICO Recopila información, la organiza y la procesa de forma adecuada, utilizando herramientas tecnológicas.
ESTÁNDAR DESEMPEÑO BÁSICO Recopila información, la organiza y la procesa de forma adecuada, utilizando herramientas tecnológicas. Sala de sistemas, Video proyector, Guías RECURSOS ACTIVIDADES PEDAGÓGICAS
UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACIÓN
UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACIÓN CICLO: 02/2015 GUIA DE LABORATORIO #3 Nombre de la Práctica: Creación de menús con Joomla Lugar de Ejecución: Centro de cómputo
Guía Notas Parciales. Intermedio
Guía Notas Parciales Intermedio ÍNDICE I. INTRODUCCIÓN 3 II. CREAR LA ESTRUCTURA DE NOTAS PARCIALES (OPCIÓN NOTAS NORMALES) 4 III. CREAR LA ESTRUCTURA DE NOTA FINAL (OPCIÓN NOTAS CALCULAS) 6 IV. INGRESAR
Apéndice 5 Manual de usuario de ColeXión. ColeXión 1.0. Manual de usuario
Apéndice 5 Manual de usuario de ColeXión ColeXión 1.0 Manual de usuario Índice 1. Qué es ColeXión?... 2 2. Requerimientos del sistema... 3 3. Instalación de ColeXión... 3 4. Creación de un nuevo esquema...
Temas. CopyRight 2013 - emmmnmmma - All rights reserved 2
Tutorial ANDROID Temas 1 - Instalación de Android 2 - Pasos para crear el primer proyecto Android 3 - Captura del clic de un botón 4 - Controles RadioGroup y RadioButton 5 - Control CheckBox 6 - Control
Guía N 1: Fundamentos básicos(i)
1 Guía N 1: Fundamentos básicos(i) Objetivos Generales: Ver una breve descripción de las capacidades más comunes de Excel Objetivos específicos: Descripción de los elementos de un libro: Hojas, iconos,
Acronis License Server. Guía del usuario
Acronis License Server Guía del usuario TABLA DE CONTENIDO 1. INTRODUCCIÓN... 3 1.1 Generalidades... 3 1.2 Política de licencias... 3 2. SISTEMAS OPERATIVOS COMPATIBLES... 4 3. INSTALACIÓN DE ACRONIS LICENSE
Instalación de Casandra Para instalar cassandra se recomienda tener la última versión de JAVA instalada.
Bases de Datos Avanzadas GUIA PARA CASSANDRA En esta guía se explicara como instalar cassandra, como agregar datos a cassandra usando spoon, y como corregir algunos problemas que puede aparecer. Para esta
GUÍA DE TRABAJO GRADO 11. Articulación SENA Programación de Software Ing. Néstor Raúl Suarez Perpiñan Página 1 de 6
Página 1 de 6 Tema: PROCEDIMIENTOS ALMACENADOS SQL SERVER Objetivo: Adquirir los conocimientos necesarios para desarrollar e implementar procedimientos almacenados utilizando SQL Server y lenguaje C# I.
Administración de la producción. Sesión 10: Gestor de Base de Datos (Access)
Administración de la producción Sesión 10: Gestor de Base de Datos (Access) Contextualización Microsoft Access es un sistema de gestión de bases de datos, creado para uso personal y de pequeñas organizaciones,
Ejercicio 16. Mejora de Notificaciones en Android. Android Con Java. Ejercicio 16. Mejora de Notificaciones en Android. Curso de Android con Java
Android Con Java Ejercicio 16 Mejora de Notificaciones en Android Objetivo del Ejercicio El objetivo del ejercicio es entender y utilizar algunas de las nuevas clases para mejorar el manejo de Notificaciones
Principales rutinas de mantenimiento
Principales rutinas de mantenimiento 1 Actualización de días de crédito en base al saldo del cliente La actualización de los días de crédito es una rutina que ayuda a saber cuales de nuestros clientes
Kaldeera Advanced Forms 2009 Guía del usuario
Kaldeera Advanced Forms 2009 Guía del usuario Indice Usando Kaldeera Advanced Forms 2009... 3 Accediendo a la página de configuración... 3 Activando o desactivando la funcionalidad de Kaldeera Advanced
MANUAL DE LA APLICACIÓN HELP DESK
CASAMOTOR MANUAL DE LA APLICACIÓN HELP DESK Desarrollado por: NOVIEMBRE, 2012 BOGOTÁ D.C. - COLOMBIA INTRODUCCIÓN Este documento es el manual de la aplicación de Help Desk de Casamotor, producto desarrollado
CREAR UN SERVICIO WEB BASICO CON JAVA AXIS2. Víctor J. Sosa [email protected]
CREAR UN SERVICIO WEB BASICO CON JAVA AXIS2. Víctor J. Sosa [email protected] En este documento explicaré brevemente cómo construir un servicio web con Java Axis2 y cómo invocarlo desde un cliente
Comisión Nacional de Bancos y Seguros
Comisión Nacional de Bancos y Seguros Manual de Usuario Capturador de Pólizas División de Servicios a Instituciones Financieras Mayo de 2011 2 Contenido 1. Presentación... 3 1.1 Objetivo... 3 2. Descarga
PHPMYADMIN Y MYSQL. Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin.
PHPMYADMIN Y MYSQL Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin. PhpMyAdmin es una herramienta para la administración del servidor de base de datos MySQL que dispone
A continuación se describen cuáles son los elementos principales de las tablas, cómo crear una y cómo modificarla.
4. TABLAS A continuación se describen cuáles son los elementos principales de las tablas, cómo crear una y cómo modificarla. 4.1. Principales Elementos Al momento de generar y diseñar una tabla es importante
Notas para la instalación de un lector de tarjetas inteligentes.
Notas para la instalación de un lector de tarjetas inteligentes. Índice 0. Obtención de todo lo necesario para la instalación. 3 1. Comprobación del estado del servicio Tarjeta inteligente. 4 2. Instalación
Parsear HTML con htmlparser para Android Guillem Pérez
Parsear HTML con htmlparser para Android Guillem Pérez He escogido esta librería(http://htmlparser.sourceforge.net/) aunque no había muchos ejemplos porque la he visto realmente ligera y esta en java hay
14 - Almacenamiento de datos en un archivo de texto en la memoria interna Problema 1:
14 - Almacenamiento de datos en un archivo de texto en la memoria interna Otra posibilidad de almacenar datos en nuestro dispositivo Android es el empleo de un archivo de texto que se guardará en el almacenamiento
Contenido. Email: capacitacion@u cursos.cl / Teléfono: 9782450
GMI Contenido PUBLICAR AVISO... 3 CREAR PROCESO DE SELECCIÓN... 6 VER/ELIMINAR AVISOS PUBLICADOS... 8 ETAPAS DE UN PROCESO DE SELECCIÓN... 10 SECCIONES DE LOS PROCESOS DE SELECCIÓN (GPS)... 21 PERSONALIZAR
MANAUAL DE MANTENIMIENTO PARA LA PÁGINA WEB DE PROYECTO ADL GESTOR DE CONTENIDOS
MANAUAL DE MANTENIMIENTO PARA LA PÁGINA WEB DE PROYECTO ADL GESTOR DE CONTENIDOS 1/8 GESTOR DE CONTENIDOS Este manual va dirigido a la persona o personas que sean las encargadas de mantener los contenidos
COMO CREAR UNA PÁGINA WEB 2-INTRODUCCIÓN A DREAWEAVER
2011 2012 COMO CREAR UNA PÁGINA WEB 2-INTRODUCCIÓN A DREAWEAVER WWW.FAUBELL.COM [email protected] Hasta ahora hemos visto una pequeña introducción a la creación de las páginas web. No te preocupes por
Curso PUDE. Desarrollo de Aplicaciones Móviles en Android
Curso PUDE Ejercicio Avanzado A: Bases de Datos y conexión con un ListView utilizando vistas A. Descripción Con este ejercicio, veremos cómo funcionan las bases de datos SQLite en Android, crearemos una,
Migración del Diagrama de Clases del Análisis al Modelo de Datos y a la Base de Datos en SQL Server 2000.x
Migración del Diagrama de Clases del Análisis al Modelo de Datos y a la Base de Datos en SQL Server 2000.x Autor: Wilder López Meléndez [email protected] http://espanol.geocities.com/wlopezm Fecha: 29
Tutorial básico del entorno de desarrollo Eclipse.
Tutorial básico del entorno de desarrollo Eclipse. Arrancar Eclipse. Después de descomprimir la aplicación, dar doble clic sobre el ícono ejecutable para arrancar la aplicación. En caso de que se presente
%& %)& '$!%*+ $, %%%&$ %%
OBJETIVO!!"#$$ %& '(%"#% (% %& %)& '$!%*+ $, %%%&$ %% REQUERIMIENTOS SOFTWARE VERSIÓN LINK Java Development Kit (JDK) 6 http://java.sun.com NetBeans 6.1 http://www.netbeans.org MySQL 5.0 http://dev.mysql.com/
Manual para el uso del Correo Electrónico Institucional Via Webmail
Manual para el uso del Correo Electrónico Institucional Via Webmail Accesando la pagina de webmail DIFSON El primer paso va a ser entrar a la página de internet donde se encuentra el correo de DIFSON.
Análisis y diseño del sistema CAPÍTULO 3
Análisis y diseño del sistema CAPÍTULO 3 36 CAPÍTULO 3 Análisis y diseño del sistema En este capítulo se pretende realizar un análisis detallado de los requerimientos del software a desarrollar para la
Practica 11: Conexión de Java con Bases de datos Access
Practica 11: Conexión de Java con Bases de datos Access En esta práctica vamos a crear una base de datos Microsoft Access y luego vamos a conectarnos desde una aplicación java haciendo uso del puente JDBC-ODBC
Manual de usuario administrador. Correo Exchange Administrado
Manual de usuario administrador Correo Exchange Administrado Triara.com SA de CV Todos los derechos reservados Esta guía no puede ser reproducido ni distribuida en su totalidad ni en parte, en cualquier
MANUAL DE USUARIO DE CUENTAS DE CORREO
MANUAL DE USUARIO DE CUENTAS DE CORREO Existen dos formas de consultar el correo, por Interfaz Web (Webmail), la cual se realiza desde un navegador de Internet, o mediante un cliente de Correo, tal como
MANUAL DE ACTUALIZACIÓN DEL SISTEMA VisualCont
MANUAL DE ACTUALIZACIÓN DEL SISTEMA VisualCont Contenido INTRODUCCIÓN... 3 ALCANCES... 3 SOLO PARA EMPRESAS QUE ESTÁN TRABAJANDO CON EL PCGR... 3 I. Acceso de las Carpetas para la Actualización.... 3 II.
Academias Nacionales De Docentes. Usuario
Academias Nacionales De Docentes Usuario Dirección General de Centros de Formación para el Trabajo contenido INTRODUCCIÓN...5 ACCESO...7 ÍNDICE DE ACADEMIAS...8 SECCIONES...9 DOCUMENTOS...11 CALENDARIO...13
Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación
Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación IIC1102 Introducción a la Programación Tutorial eclipse TM Introducción al uso de eclipse TM Contents
GVisualPDA Módulo de Almacén
GVisualPDA Módulo de Almacén GVisualPDA es una aplicación para Windows Mobile 5/6 que amplía más aún las posibilidades de integración del software de gestión GVisualRec permitiendo estar conectados en
APLICACIÓN DE ACCESO REMOTO PARA POCKET PC. MANUAL DE USUARIO (Release 1.42)
APLICACIÓN DE ACCESO REMOTO PARA POCKET PC MANUAL DE USUARIO () Índice INTRODUCCIÓN... 3 MANUAL INSTALACIÓN DEL SOFTWARE... 4 GUIA USUARIO... 5 Iniciar la Aplicación Control Remoto... 5 Bienvenido... 5
Toda base de datos relacional se basa en dos objetos
1. INTRODUCCIÓN Toda base de datos relacional se basa en dos objetos fundamentales: las tablas y las relaciones. Sin embargo, en SQL Server, una base de datos puede contener otros objetos también importantes.
3.1. Guardar un libro de trabajo
Vamos a ver las operaciones referentes a archivos como abrir, nuevo, guardar, guardar como y cerrar para poder manejarlas sin problemas a la hora de trabajar con libros de trabajo de Excel. Básicamente
Introducción a los sitios de SharePoint en Office 365
Introducción a los sitios de SharePoint en Office 365 Universidad Central del Este Contenido 1. QUÉ ES UN SITIO SHAREPOINT?... 3 2. CÓMO INGRESAR AL ÁREA DE SITIOS?... 3 3. DESCRIPCIÓN GENERAL DEL ÁREA
2_trabajar con calc I
Al igual que en las Tablas vistas en el procesador de texto, la interseccción de una columna y una fila se denomina Celda. Dentro de una celda, podemos encontrar diferentes tipos de datos: textos, números,
LABORATORIO 2. SQL SERVER- ESTRUCTURAS BASE DE DATOS DE LA ALCALDIA
LABORATORIO 2. SQL SERVER- ESTRUCTURAS BASE DE DATOS DE LA ALCALDIA Implementación de las estructuras de Base de Datos de la Alcaldía de San Antonio del SENA. Objetivo: Reconocer los esquemas de datos
Capítulo 3 Usando GUIDE. 3.1 Acerca de GUIDE
Capítulo 3 Usando GUIDE 3.1 Acerca de GUIDE Las interfaces gráficas de usuario (GUI - Graphical User Interface en inglés), es la forma en que el usuario interactúa con el programa o el sistema operativo
A- CREAR COPIA FÍSICA Y HEREDAR REGISTRO DE CONFIGURACIÓN
Pag - 1 Guía de Elaboración de Reportes Herramienta de Administración 2.0 A- CREAR COPIA FÍSICA Y HEREDAR REGISTRO DE CONFIGURACIÓN NOTA: Los pasos de esta sección deben ser ejecutados si identifica realizar
MANUAL PARA LA ACTUALIZACIÓN Y CREACIÓN DE DEPENDENCIAS EN EL SISTEMA CREG ENTREGA-RECEPCIÓN
MANUAL PARA LA ACTUALIZACIÓN Y CREACIÓN DE DEPENDENCIAS EN EL SISTEMA CREG ENTREGA-RECEPCIÓN Para la configuración de dependencias debe ingresar al menú Configuración del Sistema, después a Dependencias
WINDOWS. Iniciando Windows. El mouse
Windows es un sistema operativo, cuyo nombre lo debe al principal elemento de trabajo, la ventana - en inglés window -. Este tiene características como: Multitarea: durante una sesión de trabajo, es posible
Sistema para el alquiler, control de películas y clientes en una videotienda
CASO DE PRUEBA: Sistema para el alquiler, control de películas y clientes en una videotienda Documento de arquitectura Y servicios Versión Historia de Revisión Fecha Versión Descripción Responsable
Manual para usuarios USO DE ONEDRIVE. Universidad Central del Este
Manual para usuarios USO DE ONEDRIVE Universidad Central del Este Contenido 1. QUÉ ES Y PARA QUÉ SIRVE OFFICE 365?... 3 1.1 CÓMO ENTRAR A LA PLATAFORMA DE OFFICE 365 DE LA UCE?... 3 ONEDRIVE... 5 2. QUÉ
11 Conexión a base de datos.
Objetivos: 11 Conexión a base de datos. Identificar requisitos de conexión a las bases de datos. Elaborar conexiones. Recursos: Visual Studio 2010 o superior Guías prácticas. Datos ejemplo. Introducción
CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.
CONSULTAS CON SQL 1. Qué es SQL? Debido a la diversidad de lenguajes y de bases de datos existentes, la manera de comunicar entre unos y otras sería realmente complicada a gestionar de no ser por la existencia
Laboratorio JDBC - Base de datos con Java
Laboratorio JDBC - Base de datos con Java Objetivos: Reconocer y realizar mantenimientos con Java y Base de datos. Implementar aplicaciones cliente servidor con Base de datos. Temas: Mantenimiento del
Microsoft Access proporciona dos métodos para crear una Base de datos.
Operaciones básicas con Base de datos Crear una Base de datos Microsoft Access proporciona dos métodos para crear una Base de datos. Se puede crear una base de datos en blanco y agregarle más tarde las
MANUAL DE ADMINISTRADOR DEL SITIO WEB DEL ISTU
MANUAL DE ADMINISTRADOR DEL SITIO WEB DEL ISTU TABLA DE CONTENIDO 1. INTRODUCCION. Pág. 1 2. OBJETIVO.....Pág. 2 3. CONTENIDO Pág. 2 INTRODUCCION: El manual de administrador que a continuación se presenta,
