61. Como trabajar con Multiples Tablas en SQLite
Вставка
- Опубліковано 7 лют 2025
- ✔ Descarga la APP: play.google.co...
✔ SUSCRIBETE : goo.gl/IiPNSy
✔ Facebook: / codejavu
✔ Blog: codejavu.blogsp...
✔ Twitter: / chenaooo
✔ Instagram: / cristiandavidhenaoh
✔ Enlace GitHub: github.com/che...
✔ Udemy: www.udemy.com/...
En este video veremos como trabajar con multiples tablas en SQLite
✋✋Alto!!! 👉👉 ¿Te ayudó este video❓ 👈👈 👌 Ayudame también dando Like, compartiendo y suscribiéndote a mi canal y redes sociales!!! no les cuesta nada y me ayudan mucho❗❗❗ 👍📱👍📱👍
✔ Descarga la APP: play.google.com/store/apps/details?id=co.chenao.stroopers
✔ SUSCRIBETE : goo.gl/IiPNSy
✔ Facebook: facebook.com/codejavu
✔ Blog: codejavu.blogspot.com/
✔ Twitter: twitter.com/chenaooo
✔ Instagram: instagram.com/cristiandavidhenaoh
✔ Enlace GitHub: github.com/chenaoh/EjemploSQLite
✔ Udemy: www.udemy.com/fundamentos-de-programacion-algoritmos-en-java-y-javascript
hola Cristian muchas Gracias siempre me ayudan tus videos, tengo una duda, el problema es que tengo un Spinner filtrado con un EditText que filta bien la lista del Spinner pero cuando quiero seleccionar el elemnto filtrado para que se posicione en un textView me posiciona otro elemento, por favor si me puedes ayudar lo más rápido posible te estaría muy agradecido como siempre
se me olvidaba el Spinner contiene los datos de una tabla Sqlite en Android Studio
Sos un genio! me salvaste! eternamente agradecida!!!
Amigo estaba buscando resolver el error de renombrar las tablas en la misma db, sin embargo lo dices la solucion en el minuto 4:10 muchas gracias. Me suscribo y espero que con este comentario también resuelvan el mismo problema que el mío.
Gracias por sus videos, han sido de gran ayuda.
Gracias excelente video
Gracias!
Intereaante subd mas videos.. veo k es mas completo k app inventor like ssuscr
Me salvaste la vida gracias :)
la sentencia para usar llaves foraneas con una base de datos con mas tablas cambia mucho?
Buenas. Una inquietud, veo que no declara la llave foránea y esa es la duda que tengo, si eso lo puedo hacer siempre, solo colocando los nombres de las variables iguales en ambas tablas?
Amigo tengo una duda , en caso ya acabe la app von base de datos sql lite
Y al querer sacar a produccion necesito otra cosa implenmentar o al sacarlo a produccion la base de datos funcionara en diferentes moviles . Espero me respondas buenos videos sigue asi ❤
Muchas gracias!!, resolví un problema que tenía!
Gracias por los tutoriales
Con gusto
Gracias por los videos, me sivieron mucho, una pregunta ¿se podria reutilizar el metodo consultarListaPersonas () de la otra clase que usaste para llenar el spinner? Gracias
Hola, claro que si
hola, podrias ayudarme, cuando corro la aplicaciòn en registrar mascota, no me hace el registro, y cuando reviso el listview mascota no me agrega nada,
Hola Christian no tienes una manera de consultar multiples tablas con SQLite pero a traves del comando SQL INNER JOIN ?
yo tengo esa misma duda
x3
Amigo cristian, excelente videoy me ayudo aclarar cositas, se pueden guardar datos en una tabla sqlite desde una clase java como utilidad, intento usar alguna funciones pero me dice aque debo complementar un context, tienes algun video donde uses el conector de mysql jbdc driver, gracias por tu tiempo.
Hola, lo tengo con php y MySQL con Java tendrías que igual hacer el mismo proceso pero exponiendo un webservice que permita la comunicación, es el mismo concepto solo que con Java es un poquito más complejo
Lo que puedes hacer también es usar el ws con php solo para acceder a la BD desde la app
al desistalar la aplicacion no me actualiza la base de datos, ni borrando cache ni data de la app funciona, sabes que podria suceder
Si gracias me servirade mucho,
Gracias por los videos, muy claros. Tuvieras algun video donde se explica el uso de SQLite con imagenes?
Y si fuera posible, extraer esos registros en PDF
Hola gracias por tu ayuda con los videos sobre SQlite , podrias ayudarnos con un video explicando como exportar e import la base de datos en android .. Gracias
Solo he logrado importar datos de una BD externa con servicios Rest (JSON), seria de gran ayuda, ya que un no logro la exportación de datos
oie bro me puedes ayudar por favor me aparce errror sql dice no such table cuando quiero crear otra tabla
Excelente tus videos ya me he suscribido a tu canal, quisiera hacer un carrito de compras con sqlite, en donde se puedan crear objetos para añadir al carrito de que forma podria hacerlo???
Hola, disculpa, pese a que me vi todos los videos hay una duda que no logro resolver. Que pasa si lo que necesito es crear una base de datos externa? Osea que yo la cree usando algun gestor desde la pc como SQLite administrator para despues insertarla en mi proyeto y hacer uso de ella una vez instalada. De antemano te agradezco
Zeroman1444 hola, no he tenido que hacer algo así, creo q seria revisar donde queda alojada la.bd y poner allí la que creas, no se si sea tan simple pero es una buena duda que espero.revisar
Cristian Henao si, he visto que pocos abarcan el tema, ninguno hasta ahora en vidéo. Estaría genial si sacaras material respecto a eso, por que de todo lo demás esta perfectamente explicado, me quedó mucho más claro el manejo en Android de las bd :)
si por favor, seria buenisimo ese tema. Gracias
ES MUY SENCILLO SAMORAN SOLO CREA LA BASE DE DATOS CON BD BROWSER YA QUE LA TENGAS TE VAS A TU PROYECTO EN LA CARPETA PRINCIPALL DEL PROYECTO APP DAS CLICK DERECHO SELECCIONES NEW DESPUES FOLDER Y POR ULTIMO ASSETS FOLDER LO AGREGAS Y AHI EN ESA CARPETA SOLO PEGA EL ARCHIVO SQLITE DE TU BASE DE DATOS Y YA. INVESTIGA SOBRE LA CLASE SQLITEASSETHELPER ES MUY PARECIDA ALA SQLITEOPENHELPER PERO TE SIRVE MAS PARA BASE DE DATOS IMPORTADAS
Muy buenos videos.. podrias generar aprtir del buscador total de maacotas.. es posible..??
Buenas Cristian soy yo de nuevo en otro de tus videos, tengo un problema con mi aplicacion sobre todo en la parte de Utilidades (te sonará de la aplicacion Stroopers), te explico el funcionamiento de mi aplicacion:
primero creo una base de datos llamada "clase" con campo id y nombre hago la consulta pertinente de esta base de datos en un recyclerview y lo que quiero es que en el momento que hago click en una de las clases que se me muestra me lleve a la pantalla de la clase donde hay un recyclerview de los alumnos que corresponden con esa clase.
para ello mi lógica fue crear en Utilidades un "public static ClaseVo claseSeleccion=null;" para capturar el objeto de la ClaseVo y recuperar el nombre con "claseSeleccion.getNombre();" y asi llamarlo a la tabla de CREAR_TABLA_ALUMNOS, lo que hago es que en TABLA_ALUMNO = claseSeleccion.getNombre(); asi en el momento que entro en la pantalla con un nombre de TABLA_ALUMNO diferente me lo muestra por el consultarlistaAlumno con la clase correspondiente en teoria, el problema que tengo esque a la hora de cargar la aplicacion me devuelve un NullPointerExeption: en el que la clase ClaseVo.getNombre() on a null objetc referente.
como puedo arreglar esto? por mucho que trasteo no consigo arreglarlo, o si para hacer lo que yo quiero hay que hacerlo de otra manera como seria??
dime algo por favor y gracias por tus videos me estan sirviendo mucho!!
Hola, verifica si al momento de asignar el objeto este lo estás instanciado? Porque puede que intentes usarlo y sigue siendo null, intenta no poniéndolo null en la clase utilidades sino dándole new al objeto ahí... Otra cosa que puedes revisar es cuando asignes los datos de la consulta, que efectivamente estés almacenando la información para garantizar que se está asociando a tu objeto.
@@CristianDavidHenao gracias, al final lo hice de otra forma mucho mas sencilla, lo que hice fue crear un nuevo campo en la tabla alumnos que se llama "clase" y en la consulta de los alumnos filtro por el nombre de la clase que pertenece y me aparecen solo los alumnos que tienen ese nombre de clase.
A parte de eso Cristian solo tengo una duda que me está quebrando la cabeza y no consigo resolver y es en la parte de los adaptadores cuando en el bind..noseque declaro un boton del cardview con el metodo Onclicklistener dentro de esa funcion solo me deja usar los métodos si les paso un context, aun asi tengo problemas porque termino creando mi codigo dentro del adaptador en lugar del activity.
Como podria hacer para que desde el activity pudiera reconocerme el boton que tengo dentro del cardview que se está mostrando en el recyclerview???? ese detalle podria arreglarme muchos problemas de código,
lo que quiero hacer esque desde el activity (supongo que dentro del metodo donde tengo miAdaptador) reconozca el onclick del boton que tengo dentro del cardview que se está mostrando en un recyclerview,
hola ,al intertar integrarlo tengo problemas con la lista me da error en la importación de R
ya intente revisar el codigo paso a paso del registro de mascota, pero no me genera nada,
public class RegistroMascotaActivity extends AppCompatActivity {
EditText razaMascota,nombreMascota;
Spinner comboDuenio;
ArrayList listaPersonas;
ArrayList personasList;
ConexionSQLiteHelper conn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_registro_mascota);
razaMascota = (EditText) findViewById(R.id.campoRaza);
nombreMascota = (EditText) findViewById(R.id.campoNombreMascota);
comboDuenio = (Spinner) findViewById(R.id.comboDuenioMascota);
conn = new ConexionSQLiteHelper(getApplicationContext(), "bd_usuarios", null, 1);
consultarListaPersonas();
ArrayAdapter adaptador = new ArrayAdapter
(this, android.R.layout.simple_spinner_item,listaPersonas);
comboDuenio.setAdapter(adaptador);
comboDuenio.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView parent, View view, int position, long idl) {
}
@Override
public void onNothingSelected(AdapterView adapterView) {
}
});
}
public void onClick(View view) {
switch (view.getId()){
case R.id.btnRegistraMascota: registrarMascota();
}
}
private void registrarMascota() {
SQLiteDatabase db=conn.getWritableDatabase();
ContentValues values=new ContentValues();
values.put(Utilidades.CAMPO_NOMBRE_MASCOTA,nombreMascota.getText().toString());
values.put(Utilidades.CAMPO_RAZA_MASCOTA,razaMascota.getText().toString());
int idCombo= (int) comboDuenio.getSelectedItemId();
/**
* Valida la seleccion del combo de dueños, si el usuario elige "seleccione" entonces
* se retorna el id 0 ya que la palabra "seleccione" se encuentra en la pos 0 del combo,
* sinó entonces se retorna la posicion del combo para consultar el usuario almacenado en la lista
*/
if (idCombo!=0){
Log.i("TAMAÑO",personasList.size()+"");
Log.i("id combo",idCombo+"");
Log.i("id combo - 1",(idCombo-1)+"");//se resta 1 ya que se quiere obtener la posicion de la lista, no del combo
int idDuenio=personasList.get(idCombo-1).getId();
Log.i("id DUEÑO",idDuenio+"");
values.put(Utilidades.CAMPO_ID_DUENIO,idDuenio);
Long idResultante=db.insert(Utilidades.TABLA_MASCOTA, Utilidades.CAMPO_ID_MASCOTA,values);
Toast.makeText(getApplicationContext(),"Id Registro: "+idResultante,Toast.LENGTH_SHORT).show();
db.close();
}else{
Toast.makeText(getApplicationContext(),"Debe seleccionar un Dueño",Toast.LENGTH_LONG).show();
}
}
private void consultarListaPersonas() {
SQLiteDatabase db=conn.getReadableDatabase();
Usuario persona=null;
personasList =new ArrayList();
//select * from usuarios
Cursor cursor=db.rawQuery("SELECT * FROM "+ Utilidades.TABLA_USUARIO,null);
while (cursor.moveToNext()){
persona=new Usuario();
persona.setId(cursor.getInt(0));
persona.setNombre(cursor.getString(1));
persona.setTelefono(cursor.getString(2));
Log.i("id",persona.getId().toString());
Log.i("Nombre",persona.getNombre());
Log.i("Tel",persona.getTelefono());
personasList.add(persona);
}
obtenerLista();
}
private void obtenerLista() {
listaPersonas=new ArrayList();
listaPersonas.add("Seleccione");
for(int i=0;i
Alguien sabe como hacer esta consulta de tablas pero con ROOM? solo he podido hacer con una sola tabla, pero me gustaría aprender como hacerlo de manera multitabla, muchas gracias de antemano
Sí quiero consultar la mascota con su dueño en ves de hacer las consultas separadas no puedo meter un INNER JOIN ??
No se puede crear foreign keys en las tablas SQLite? (o relaciones en otras palabras)
Dan SB si claro, solo que como se supone que es una bd pequeña el tema de relaciones no es tan trascendental
Como seria el codigo para activar las FOREIGN KEYS? hay muy poca informacion en la red
@@noticiasnews9127 lo que pasa es que muchos no utilizan sqllite en android ,usan firebase o mongodb por las caracteristicas de ser big data , ademas de ser faciles para ser hibiridas
hola se pueden hacer inner join en SQLite?
Una pregunta, ya hiciste algún vídeo para guardar datos en un archivo txt por ejemplo?
Leonardo Gómez hola, solo con sharedPreferences
Había utilizado ficheros hasta ahora y me he pasado a base de datos. Todo mucho más práctico y sencillo :D
Dentro del if en esta linea, Long idResultante = helper.insert(ConnectionDB.TABLE_TAREAS, ConnectionDB.TABLE_ID_TAREA, values); El insert me sale en rojo, no puedo insertar clase ni se me ocurre porq puede pasar, he mirado en internet y no veo porq puede ser............ Alguien me ayuda.
hola, muchas gracias por tus videos me han servido de mucho para realizar base de datos en android, yo tengo un problema, cuando quiero hacer el registro de mascota, no funciona, y cuando quiero revisar el listview de mascotas, no me aparece nada agregado, no se cual sería el problema, si me podria ayudar
Es para un proyecto importante de la escuela
Alguien puede ayudarme, cuando le doy registrar mascota, no me hace el registro y cuando voy a la lista de mascota, no me agrega nada
¿Cómo podría crear datos directamente en sqlite y mostrarlos en un listview?
mira los videos anteriores
Buenas...si alguien me puede ayuda, el porque creo una tabla y cuando hago el registro sale error -1. Gracias
Alguien me podría ayudar,cuando le doy registrar en registro de mascotas, no me genera nada
muy buenos tus vídeos pero explicas todo en chinga, hay veces que no se te entiende nada, se un poco mas comprensivo con tu publico
Cuando realizo el registro me devuelve un id -1 siempre, en cualquier registro que haga de mascota. Porque sera??
Esta mal creada la tabla revisa con el SQlite administrator
Me pasa lo mismo aunque yo no estoy haciendoeste tutorial.
Estoy aquí para ver si este video me ayuda a resolver eso.
@@Nach956 Lograste resolver el problema? :'c
Tuve problemas en el agregado de mascotas , solo lanza el mensaje " id= -1" qué sería el problema?
hola me gustaria saber como hacer que el id del usuario no se repita osea que sea unico, yo le pongo lo siguiente "INTEGER UNIQUE NOT NULL, al campo id donde se crea la tabla pero no funciona. gracias de antemano
"INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL" creeria que poniendo eso tu id no se repetirá nunca y siempre irá incrementandose.
y el foreign key?
Very good your video Cristian.
Is is possible to you create one new video using one table en SQLite to generate one or more graphics (bar, line or pizza) to display some metrics? May be using your mascota exemple, displaying how many mascotas do you have? how many people do you have with telephone?
Hey men: do has finised this video?
to display any pictures in a layout, you only need add the pictures in the drawable folder... I hope helped you.
Tienes algún tutorial de como sincronizar una base de datos remota con una local?. Necesito que los datos que se modifican en la base remota se reflejen en la local. La app solo muestra datos y la idea es que pueda trabajar sin conexión a internet. Saludos
Julio Romero yo ando en busca de lo mismo, encontraste algun video que indique como hacerlo?
Este Aparte es muy interesante para eso ...ua-cam.com/video/aelVOTSRg94/v-deo.html
muy buen video, pero me sale error en el AUTOINCREMENT, alguien me ayuda como funciona?
Okey pero con más de dos tablas, ahí cómo se le hace?
una facturacion podria hacer
el registro de mascotas no hace nada y se detiene la app a cuántos les pasa lo mismo???
saludos broder mira todo lo del tutorial se realiza correctamenta, solo revisa por parte tu codigo. con el codigo que nos da en github.com/chenaoh/EjemploSQLite
yo tambien intente hacer el registro de mascotas, pero no hace nada, no hace los registros
Me marco sl final un error en la parte de ConexionSQLiteOpenHelper
En db.execsql("DROP TABLE IF EXISTS"+utililidades.tabla1);
db.execsql("DROP TABLE IF EXISTS"+utililidades.tabla2);
En la parte de "DROP TABLE IF EXITS" , alguien me podria ayudar con este error, por favor!!
"DROP TABLE IF EXISTS "+utilidades.tabla1 ----> Tenés que dejar un espacio antes de cerrar las comillas
Listo
Saludos cristian intente agregar los datos a las tabla utilizando la consulta sql pero se detiene la aplicacion talves me ayudas te muestro el codigo que utilize. practicamente como seria ingresar el spinner.
private void RegistrarMascota() {
ConexionSQLiteHelper conn=new ConexionSQLiteHelper(this,"bd_usuarios",null,1);
SQLiteDatabase db= conn.getWritableDatabase();
String insert = "INSERT INTO "+Utilidades.TABLA_MASCOTA+
" (" +Utilidades.CAMPO_ID_DUENO+ " ," +Utilidades.CAMPO_NOMBRE_MASCOTA+ " ,"+Utilidades.CAMPO_RAZA_MASCOTA+ ") " +
"VALUES (" +ComboIdDuenoMascota.toString()+ " ," +CampoNombreMascota.getText().toString()+ " ," +CampoRazaMascota.getText().toString()+ " )";
Log.i("resultado",insert);
Log.i("CAMPO_ID_DUEÑO :",Utilidades.CAMPO_ID_DUENO);
Log.i("ID_DUEÑO :",ComboIdDuenoMascota.toString());
db.execSQL(insert);
db.close(); }
Caused by: android.database.sqlite.SQLiteException: near ".":
syntax error (code 1): , while compiling: INSERT INTO mascota (id_dueno ,nombre_mascota ,raza_mascota)
VALUES (android.support.v7.widget.AppCompatSpinner{427a9bf0 VFED..CL ........ 0,458-720,506 #7f070007 app:id/ComboIdDuenoMascota} ,ggg ,bhh )
E/ViewRootImpl: sendUserActionEvent() mView == null
I/resultado: INSERT INTO mascota (id_dueno ,nombre_mascota ,raza_mascota) VALUES (android.support.v7.widget.AppCompatSpinner{427a9bf0 VFED..CL ........ 0,458-720,506 #7f070007 app:id/ComboIdDuenoMascota} ,ggg ,bhh )
CAMPO_ID_DUEÑO :: id_dueno
ID_DUEÑO :: android.support.v7.widget.AppCompatSpinner{427a9bf0 VFED..CL ........ 0,458-720,506 #7f070007 app:id/ComboIdDuenoMascota}
Realice un pequeño cambio en la consulta mejor dicho en el spiner le quite el toString y le agregue ComboIdDuenoMascota.getSelectedItem() tambien ice la prueba ComboIdDuenoMascota.getSelectedItem().toString pero ahora si me muestra la consulta completa pero me dice que que no sabe cual es esa columna o el contenido
no such column: MIMASCOTA (code 1): , while compiling: INSERT INTO mascota (id_dueno ,nombre_mascota ,raza_mascota) VALUES (55 ,MIMASCOTA ,callegero);
Solucionado hacia falta las comillas simples para los campos de texto
" ,'" +CampoNombreMascota.getText().toString()+ "' ,'" +CampoRazaMascota.getText().toString()+ "')";
Fondo negro para tutoriales es lo peor para visualizzar. Aconsejo fondo blanco
Hola, cuando le doy a guardar me sale el idResultante -1
Hola Japson.
Se te esta presentando un problema en la creacion de la tabla por ende no se esta referenciando para guardar informacion porque no la encuentra recuerda verificar espacios.
Me sucedio y casi muero en el intento pero logre encontrar el problema que estaba asociado a un espacio en las definiciones del tipo de dato en la sentencia SQL.
te envio la sentencia para q la revises.
public static final String CREATE_TABLE_USUARIO ="CREATE TABLE "+TABLA_USUARIO+"("+CAMPO_ID+" INTEGER,"+CAMPO_NOMBRE+" TEXT,"+CAMPO_TELEFONO+" TEXT)";
Y sin mas Agradecerle al Instructor Cristian Por tan excelentes Videos.