17
UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLOGICOS COORDINACION DE COMPUTACION Ciclo I BASE DE DATOS Guía de Laboratorio No. 7 SQLite I. RESULTADOS DE APRENDIZAJE Que el estudiante: Aplique el proceso de creación y manejo de datos SQLite, donde aprenderemos a dar mantenimientos a la tabla desde una aplicación Android II. INTRODUCCIÓN SQLITE SQLite es un sistema de gestión de bases de datos relacional compatible con ACID, contenida en una relativamente pequeña (~275 kiB) 2 biblioteca escrita en C. SQLite es un proyecto de dominio público creado por D. Richard Hipp. A diferencia de los sistema de gestión de bases de datos cliente-servidor, el motor de SQLite no es un proceso independiente con el que el programa principal se comunica. En lugar de eso, la biblioteca SQLite se enlaza con el programa pasando a ser parte integral del mismo. SQLITE MANAGER SQLiteManager es un gestor de bases de datos SQLite, con una interfaz muy clara, dividida en pestañas para los elementos de diseño, administración y la elaboración de instrucciones SQL, con la posibilidad de crear y navegar por las tablas, índices y views, insertar, eliminar y editar las tablas, ejecutar sentencias SQL,etc. III. MATERIALES Y EQUIPO No. Requerimientos Cantidad 1 Memoria USB 1 2 PC con MySQL y editor SQLite 1 3 Guía de laboratorio 7 1 IV. PROCEDIMIENTO Para esta práctica deberá crear un proyecto en Android Studio con el nombre basededatos

Para esta práctica deberá crear un proyecto en Android ... · basededatos. PARTE 1: Clase java para ayudarnos a la creación de base de datos 1. Debemos agregar una nueva clase

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Para esta práctica deberá crear un proyecto en Android ... · basededatos. PARTE 1: Clase java para ayudarnos a la creación de base de datos 1. Debemos agregar una nueva clase

UNIVERSIDAD DON BOSCO

FACULTAD DE ESTUDIOS TECNOLOGICOS

COORDINACION DE COMPUTACION

Ciclo I

BASE DE DATOS

Guía de Laboratorio No. 7

SQLite

I. RESULTADOS DE APRENDIZAJE

Que el estudiante:

• Aplique el proceso de creación y manejo de datos SQLite, donde aprenderemos a dar

mantenimientos a la tabla desde una aplicación Android

II. INTRODUCCIÓN

SQLITE

SQLite es un sistema de gestión de bases de datos relacional compatible con ACID, contenida en una

relativamente pequeña (~275 kiB)2 biblioteca escrita en C. SQLite es un proyecto de dominio

público creado por D. Richard Hipp.

A diferencia de los sistema de gestión de bases de datos cliente-servidor, el motor de SQLite no es un

proceso independiente con el que el programa principal se comunica. En lugar de eso, la biblioteca

SQLite se enlaza con el programa pasando a ser parte integral del mismo.

SQLITE MANAGER

SQLiteManager es un gestor de bases de datos SQLite, con una interfaz muy clara, dividida en pestañas

para los elementos de diseño, administración y la elaboración de instrucciones SQL, con la posibilidad

de crear y navegar por las tablas, índices y views, insertar, eliminar y editar las tablas, ejecutar

sentencias SQL,etc.

III. MATERIALES Y EQUIPO

No. Requerimientos Cantidad

1 Memoria USB 1

2 PC con MySQL y editor SQLite 1

3 Guía de laboratorio 7 1

IV. PROCEDIMIENTO

Para esta práctica deberá crear un proyecto en Android Studio con el nombre

basededatos

Page 2: Para esta práctica deberá crear un proyecto en Android ... · basededatos. PARTE 1: Clase java para ayudarnos a la creación de base de datos 1. Debemos agregar una nueva clase

PARTE 1: Clase java para ayudarnos a la creación de base de datos

1. Debemos agregar una nueva clase java con el nombre DBHelper,

siguiendo los siguientes pasos:

2. En la clase DBHelper, debemos hacer que se extendia a la clase SQLiteOpenHelper, que

nos proporciona dos métodos para abrir modo lectura y escritura nuestra Base de datos

que utilizaremos en nuestra aplicación.

package com.example.k2m.basededatos;

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

public class DBHelper extends SQLiteOpenHelper {

//Nombre de nuestra base de datos

private static final String DB_NAME="Contactos.sqlite";

/*Version de nuestro esquema de la base de datos que

nos muestra la version de nuestra estructura de la Base de Datos*/

private static final int DB_SCHEME_VERSION=1;

//Nos ayuda para la creación y actualización de nuestras base de datos.

public DBHelper(Context context) {

super(context, DB_NAME, null, DB_SCHEME_VERSION);

}

//En este metodo vamos a crear las tablas de la base de datos

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL(DataBaseManager.CREATE_CATEGORIAS);

db.execSQL(DataBaseManager.CREATE_TABLE);

}

//En este metodo vamos a modificar nuestra base de datos.

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

}

Page 3: Para esta práctica deberá crear un proyecto en Android ... · basededatos. PARTE 1: Clase java para ayudarnos a la creación de base de datos 1. Debemos agregar una nueva clase

PARTE 2: Clase java para ayudarnos a la creación y mantenimientos de tablas.

4. Debemos agregar una nueva clase java con el nombre

DataBaseManager, en el cual crearemos los elementos necesarios

para realizar los CRUD(Create, Read,Update,Delete).

package com.example.k2m.basededatos;

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

public class DataBaseManager {

//TABLA CONTACTOS

public static final String TABLE_NAME="contactos";

//nombre de los campos de la tabla contactos

public static final String CN_ID="_id";

public static final String CN_NAME="nombre";

public static final String CN_PHONE="telefono";

public static final String CN_CATEGORIES="categoria";

//TABLA CATEGORIAS

public static final String TABLE2_NAME="Categorias";

//nombre de los campos de la tabla categorias

public static final String CN_ID2="_id";

public static final String CN_NAME2="nombre";

//sentencia SQL para crear la tabla.

public static final String CREATE_TABLE = "create table " +TABLE_NAME+

"("

+ CN_ID +" integer primary key autoincrement,"

+ CN_NAME +" text not null,"

+ CN_PHONE +" text,"

+ CN_CATEGORIES +" integer,"

+ "FOREIGN KEY("+CN_CATEGORIES+") REFERENCES

"+TABLE2_NAME+"("+CN_ID2+"));";

//CREATE TABLE IF NOT EXISTS Categoria

public static final String CREATE_CATEGORIAS = "create table " +

TABLE2_NAME+"("

+ CN_ID2 +" integer primary key autoincrement,"

+ CN_NAME2 + " text not null);";

//Creacion de objetos

Page 4: Para esta práctica deberá crear un proyecto en Android ... · basededatos. PARTE 1: Clase java para ayudarnos a la creación de base de datos 1. Debemos agregar una nueva clase

private DBHelper helper;

private SQLiteDatabase db;

//Constructor de la instancia nos servira para ejecutar los demas mantenimientos.

public DataBaseManager(Context context){

helper = new DBHelper(context);

db = helper.getWritableDatabase();

}

//Funcion que devuelve contendor de valores

public ContentValues generarContentValues(String nombre, String Telefono,String

Categoria){

//creación de contenedor de valores.

ContentValues valores= new ContentValues();

valores.put(CN_NAME,nombre);

valores.put(CN_PHONE,Telefono);

valores.put(CN_CATEGORIES,Categoria);

return valores;

}

//insertar datos a contacto

public void insertar(String nombre, String Telefono,String Categorias){

//para insertar necesitamos nombre de tabla, NullColumHack(indica campo que

puede ser nulo

// en la tabla ó escribir null), Contenedor de Valores

db.insert(TABLE_NAME, null, generarContentValues(nombre, Telefono,

Categorias));

//Otra Forma para hacer insert

// db.execSQL("insert into "+TABLE_NAME+"

values(null,'"+nombre+"',"+Telefono+");");

}

//eliminar registro por id

public void eliminar(String id){

//? se sustituye por el id que recibira

db.delete(TABLE_NAME,CN_ID+"=?",new String[]{id});

}

//elimar registros por nombre

public void eliminarmultiple(String nom1, String nom2){

db.delete(TABLE_NAME,CN_ID+" IN (?,?)",new String[]{nom1,nom2});

}

//modificar datos de contacto

public void modificarTelefono(String id,String nombre, String NuevoTelefono, String

Categorias){

db.update(TABLE_NAME, generarContentValues(nombre, NuevoTelefono,

Categorias), CN_ID + "=?", new String[]{id});

}

Page 5: Para esta práctica deberá crear un proyecto en Android ... · basededatos. PARTE 1: Clase java para ayudarnos a la creación de base de datos 1. Debemos agregar una nueva clase

//Buscar todos los contactos

public Cursor cargarCursorContactos(){

String[] columnas = new String[]{CN_ID,CN_NAME,CN_PHONE};

return db.query(TABLE_NAME,columnas,null,null,null,null,null);

}

//Buscar Contacto por Nombre

public Cursor buscarContacto(String nombre){

String[] columnas = new String[]{CN_ID,CN_NAME,CN_PHONE};

return db.query(TABLE_NAME,columnas,CN_NAME+"=?",new

String[]{nombre},null,null,null);

}

//Buscar Contacto por ID

public Cursor buscarID(String id){

String[] columnas = new

String[]{CN_ID,CN_NAME,CN_PHONE,CN_CATEGORIES};

return db.query(TABLE_NAME,columnas,CN_ID+"=?",new

String[]{id},null,null,null);

}

//Cargar categorias

public Cursor CargarCategorias(){

String[] columnas = new String[]{CN_ID2,CN_NAME2};

return db.query(TABLE2_NAME,columnas,null,null,null,null,null);

}

//Insertar categorias

public void insertarcat(String Nombre){

ContentValues valores= new ContentValues();

valores.put(CN_NAME2,Nombre);

db.insert(TABLE2_NAME, null, valores);

}

}

PARTE 3: Creación de Activity para manejar datos.

5. Deberemos crear lo siguiente en Activity_Main.xml A partir de

la siguiente imagen:

Page 6: Para esta práctica deberá crear un proyecto en Android ... · basededatos. PARTE 1: Clase java para ayudarnos a la creación de base de datos 1. Debemos agregar una nueva clase

6. Debemos modificar nuestro MainActivity.class, la cual se encargara de

realizar nuestros mantenimientos a la base de datos (insertar, leer,

actualizar y eliminar). package com.example.k2m.basededatos;

import android.app.Activity;

import android.content.Intent;

import android.content.SharedPreferences;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.os.Bundle;

import android.support.design.widget.FloatingActionButton;

import android.support.design.widget.Snackbar;

import android.support.v7.app.AppCompatActivity;

import android.support.v7.widget.Toolbar;

import android.util.Log;

import android.view.View;

Page 7: Para esta práctica deberá crear un proyecto en Android ... · basededatos. PARTE 1: Clase java para ayudarnos a la creación de base de datos 1. Debemos agregar una nueva clase

import android.view.Menu;

import android.view.MenuItem;

import android.widget.AdapterView;

import android.widget.Button;

import android.widget.ListView;

import android.widget.SimpleCursorAdapter;

import android.widget.TextView;

import android.widget.Toast;

import java.util.HashMap;

import java.util.Objects;

public class MainActivity extends Activity implements

View.OnClickListener {

private DataBaseManager manager; //Ayuda a manejo de la BD

Cursor cursor; //Extraer datos de TB Contactos

SimpleCursorAdapter adapter; //Adaptador para ingresar datos de

cursor a ListView

private SharedPreferences registro;

private SharedPreferences.Editor admin;

private ListView lista;

private TextView tv;

private Button btn;

private Button btnbuscar;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

lista = (ListView) findViewById(R.id.listView);

tv = (TextView) findViewById(R.id.TxtNombre);

//Creando Tablas

manager = new DataBaseManager(this);

cursor = manager.cargarCursorContactos();

//eventos de boton

btn =(Button) findViewById(R.id.button);

btn.setOnClickListener(this);

btnbuscar =(Button) findViewById(R.id.btnagregar);

Page 8: Para esta práctica deberá crear un proyecto en Android ... · basededatos. PARTE 1: Clase java para ayudarnos a la creación de base de datos 1. Debemos agregar una nueva clase

btnbuscar.setOnClickListener(this);

//Creacion de columnas para cursores

final String[] from=new

String[]{manager.CN_NAME,manager.CN_PHONE};

int[] to = new int[]{android.R.id.text1,android.R.id.text2};

//Mostrar todos los contactos.

adapter = new

SimpleCursorAdapter(this,android.R.layout.two_line_list_item,cursor,fro

m,to,0);

lista.setAdapter(adapter);

//Obteniendo ID de contactos para mostrar informacion.

lista.setOnItemClickListener(new

AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> parent, View view, int

position, long id) {

cursor.moveToPosition(position);

Intent editar = new Intent(MainActivity.this,

EditarActivity.class);

editar.putExtra("idContacto", cursor.getString(0));

startActivity(editar);

finish();

//Toast.makeText(MainActivity.this,

cursor.getString(1),Toast.LENGTH_SHORT).show();

}

});

//Realizar insercion cuando se abra por primera vez la app

registro = getSharedPreferences("Historial",1);

admin = registro.edit();

//verificar si es la primera vez

if(registro.getBoolean("Primera_vez",true)){

//insercion a tabla categorias

manager.insertarcat("Amigos");

manager.insertarcat("Trabajo");

manager.insertarcat("Familia");

admin.putBoolean("Primera_vez",false).commit();

}

}

@Override

//Evento clic de botones

public void onClick(View v) {

Page 9: Para esta práctica deberá crear un proyecto en Android ... · basededatos. PARTE 1: Clase java para ayudarnos a la creación de base de datos 1. Debemos agregar una nueva clase

if(v.getId()==R.id.button){

//Hacer busqueda de contactos.

final Cursor c= manager.buscarContacto(tv.getText().toString());

adapter.changeCursor(c);

lista.setOnItemClickListener(new

AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> parent, View view,

int position, long id) {

c.moveToPosition(position);

Intent editar = new Intent(MainActivity.this,

EditarActivity.class);

editar.putExtra("idContacto", c.getString(0));

startActivity(editar);

finish();

}

});

}

if(v.getId()==R.id.btnagregar){

Intent otro = new Intent(this,Main2Activity.class);

startActivity(otro);

finish();

}

}

}

7. Deberemos crear lo siguiente en Activity2_Main.xml A partir

de la siguiente imagen:

Page 10: Para esta práctica deberá crear un proyecto en Android ... · basededatos. PARTE 1: Clase java para ayudarnos a la creación de base de datos 1. Debemos agregar una nueva clase

8. Debemos modificar nuestro Main2Activity.class, la cual se encargara de

realizar nuestros mantenimientos a la base de datos (insertar, leer,

actualizar y eliminar). package com.example.k2m.basededatos;

import android.content.Intent;

import android.database.Cursor;

import android.media.Image;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.ArrayAdapter;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ImageView;

import android.widget.SimpleCursorAdapter;

import android.widget.Spinner;

import android.widget.Toast;

public class Main2Activity extends AppCompatActivity implements

View.OnClickListener {

private DataBaseManager manager;

private EditText txtnombre;

private EditText txttelefono;

private Button btnguardar;

private Spinner spncategorias;

SimpleCursorAdapter acategorias;

Cursor ccategorias;

private Integer posicion;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main2);

manager = new DataBaseManager(this);

txttelefono= (EditText) findViewById(R.id.txtNtelefono);

txtnombre = (EditText) findViewById(R.id.txtNContacto);

spncategorias = (Spinner) findViewById(R.id.cmbcategorias);

btnguardar = (Button) findViewById(R.id.btnguardar);

btnguardar.setOnClickListener(this);

final String[] from=new String[]{manager.CN_NAME2};

int[] to = new int[]{android.R.id.text1};

ccategorias = manager.CargarCategorias();

Page 11: Para esta práctica deberá crear un proyecto en Android ... · basededatos. PARTE 1: Clase java para ayudarnos a la creación de base de datos 1. Debemos agregar una nueva clase

acategorias = new

SimpleCursorAdapter(this,android.R.layout.simple_spinner_dropdown_it

em,ccategorias,from,to,0);

spncategorias.setAdapter(acategorias);

ImageView avatar = (ImageView) findViewById(R.id.img);

avatar.setImageResource(R.drawable.contacto);

}

@Override

public void onClick(View v) {

if(v.getId()== R.id.btnguardar){

posicion = spncategorias.getSelectedItemPosition();

ccategorias.moveToPosition(posicion);

// Toast.makeText(Main2Activity.this, ccategorias.getString(0),

Toast.LENGTH_SHORT).show();

manager.insertar(txtnombre.getText().toString(),txttelefono.getText().toSt

ring(),ccategorias.getString(0));

txtnombre.setText("");

txttelefono.setText("");

Intent refresh= new Intent(this,MainActivity.class);

startActivity(refresh);

finish();

}

}

}

9. Deberemos crear lo siguiente en Activity_editar.xml A partir

de la siguiente imagen:

Page 12: Para esta práctica deberá crear un proyecto en Android ... · basededatos. PARTE 1: Clase java para ayudarnos a la creación de base de datos 1. Debemos agregar una nueva clase

4. Debemos modificar nuestro EditarActivity.class, la cual se

encargara de realizar nuestros mantenimientos a la base de

datos (insertar, leer, actualizar y eliminar). package com.example.k2m.basededatos;

import android.content.Intent;

import android.database.Cursor;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.webkit.WebView;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ImageView;

import android.widget.SimpleCursorAdapter;

import android.widget.Spinner;

import android.widget.Toast;

public class EditarActivity extends AppCompatActivity implements

View.OnClickListener {

private DataBaseManager manager;

Cursor cursor;

private String parametro;

private EditText txtnombre;

private EditText txttelefono;

private Spinner spncategorias;

SimpleCursorAdapter acategorias;

Cursor ccategorias;

private Integer posicion;

private Button btnactualizar;

private Button btnEliminar;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_editar);

manager = new DataBaseManager(this);

Intent param = getIntent();

parametro=param.getStringExtra("idContacto");

// Toast.makeText(this, parametro, Toast.LENGTH_SHORT).show();

cursor = manager.buscarID(parametro);

cursor.moveToPosition(0);

Page 13: Para esta práctica deberá crear un proyecto en Android ... · basededatos. PARTE 1: Clase java para ayudarnos a la creación de base de datos 1. Debemos agregar una nueva clase

txttelefono= (EditText) findViewById(R.id.txtNtelefono);

txtnombre = (EditText) findViewById(R.id.txtNContacto);

spncategorias = (Spinner) findViewById(R.id.cmbcategorias);

btnactualizar = (Button) findViewById(R.id.btnactualizar);

btnactualizar.setOnClickListener(this);

txtnombre.setText(cursor.getString(1));

txttelefono.setText(cursor.getString(2));

posicion = Integer.parseInt(cursor.getString(3));

final String[] from=new String[]{manager.CN_NAME2};

int[] to = new int[]{android.R.id.text1};

ImageView avatar = (ImageView) findViewById(R.id.img);

switch (posicion){

case 1:

avatar.setImageResource(R.drawable.amigos);

break;

case 2:

avatar.setImageResource(R.drawable.trabajo);

break;

case 3:

avatar.setImageResource(R.drawable.familia);

break;

default:

avatar.setImageResource(R.drawable.contacto);

}

ccategorias = manager.CargarCategorias();

acategorias = new

SimpleCursorAdapter(this,android.R.layout.simple_spinner_dropdown_it

em,ccategorias,from,to,0);

spncategorias.setAdapter(acategorias);

//Posiciona spinner en id de categoria guardad en base de datos

spncategorias.setSelection(posicion-1);

btnEliminar=(Button) findViewById(R.id.btnEliminar);

btnEliminar.setOnClickListener(this);

}

@Override

public void onClick(View v) {

if(v.getId()== R.id.btnactualizar){

posicion = spncategorias.getSelectedItemPosition();

ccategorias.moveToPosition(posicion);

Page 14: Para esta práctica deberá crear un proyecto en Android ... · basededatos. PARTE 1: Clase java para ayudarnos a la creación de base de datos 1. Debemos agregar una nueva clase

manager.modificarTelefono(parametro,

txtnombre.getText().toString(), txttelefono.getText().toString(),

ccategorias.getString(0));

txtnombre.setText("");

txttelefono.setText("");

Intent refresh= new Intent(this,MainActivity.class);

startActivity(refresh);

finish();

}

if(v.getId()== R.id.btnEliminar){

manager.eliminar(parametro);

txtnombre.setText("");

txttelefono.setText("");

Intent refresh= new Intent(this,MainActivity.class);

startActivity(refresh);

finish();

}

}

}

5. Vamos a ejecutar nuestra aplicación dando clic en Run

6. Cuando nuestra aplicación se cargue en el emulador podemos revisar si,

se nos ha creado nuestra base de datos, procediendo a dar clic en

Android Device Monitor ahí daremos clic en File Explorer, luego

ubicaremos nuestra carpeta data y dentro de ella nuestro paquete con el

nombre de la aplicación.

Page 15: Para esta práctica deberá crear un proyecto en Android ... · basededatos. PARTE 1: Clase java para ayudarnos a la creación de base de datos 1. Debemos agregar una nueva clase

PARTE 4: SQLite Manager

10. Haremos una copia de nuestra base de datos sqlite, en nuestra máquina para

poder monitorear los cambios en ella. Para ello haremos daremos clic en Guardar

archivo en destino.

11. En el cuadro de dialogo deberemos seleccionar la ubicación (Escritorio de

Windows) y poner el nombre al archivo con extensión .sqlite.

12. Ahora que tenemos una copia de nuestra base de datos, podemos abrirlo desde

SqliteManager, Abrimos nuestro navegador Firefox y abrimos la extensión

SQLiteManager para poder conectarnos a nuestra copia.

Page 16: Para esta práctica deberá crear un proyecto en Android ... · basededatos. PARTE 1: Clase java para ayudarnos a la creación de base de datos 1. Debemos agregar una nueva clase

13. En el siguiente cuadro seleccionamos la ubicación de nuestro archivo.

14. Ahora ya tenemos la conexión a nuestra copia de BD Contactos, ya podemos ver

su tabla y trabajar en ellas haciendo select, insert, update y delete.

V. BIBLIOGRAFÍA

http://www.hermosaprogramacion.com/2016/01/base-de-datos-sqlite-en-android-con-

multiples-tablas/

Page 17: Para esta práctica deberá crear un proyecto en Android ... · basededatos. PARTE 1: Clase java para ayudarnos a la creación de base de datos 1. Debemos agregar una nueva clase

HOJA DE EVALUACIÓN

Actividad a

evaluar

Criterio a evaluar Cumplió Puntaje

SI NO

Procedimiento

de guías

Realizo los ejercicios de ejemplos durante la

práctica. (40%)

Presento todos los problemas resueltos. (20%)

Funcionan todos correctamente y sin errores.

(30%)

Envió los ejercicios en una carpeta

comprimida de acuerdo en el tiempo

estipulado por el docente. (10%)

PROMEDIO:

Ejercicio

Complementar

io

Realizó el análisis de resultados durante la

guía de práctica (40%)

Presentó todos los problemas resueltos (20%)

Funcionan todos correctamente y sin errores

(30%)

Envió los ejercicios en una carpeta

comprimida de acuerdo en el tiempo

estipulado por el docente (10%)

PROMEDIO:

Alumno: Carnet:

Docente: Fecha:

Título de la guía: SQLite No.: Guía 6