Sqlite
Sqlite
2.
3.
4.
5. Vamos a hacer un crud, vamos a poder agregar, actualizar, eliminar registros desde la aplicación
7.
8. Video 02 como crear una BD SQLite en Android
9. Sql lite es un motor de base de datos muy popular , más si hablamos de Android
10. Una de sus características q lo hacen importante es su menor tamaño en comparación con otros
11.
13.
14. Por defecto Android viene preparado para trabajar con estas bases de datos
15.
16. El objetivo es crear una tabla que podamos conectar desde nuestra aplicación para hacer la
17. También vamos ver como cargar la información en un combo de selección o en una lista
18. Vamos a crear una aplicación con un activity vacío al cual vamos agregar cuatro botones
19.
23. Vamos a agregar en dimens un margen que vamos a utilizar más adelante
24.
25.
26. Convertimos a coordinator , si sale algún error daremos al menú Bulid Clean project
32.
33. Agregamos el tercer botón
34.
38.
39. Ahora nos vamos a centrar en la estructura de la base de datos
40. Debemos de tomar en cuenta que para el registro de usuarios lo único que voy a hacer es crear
una tabla sencilla que corresponde al usuario que quiero registrar, ese usuario va a tener tres
41.
42. Para crear la estructura que va a tener el usuario vamos a crear un nuevo directorio o package
43.
44. Este package entidades va agrupar las tablas de nuestra base de datos
45. Dentro de entidades vamos a crear una java class que se va a llamar usuario
46.
47. Agregamos los atributos dni, nombre , teléfono y con alt insert agregamos un constructor con
52. Ya tenemos la estructura de nuestra tabla, la cual vamos a utilizar más adelante para nuestra
53. Vamos a crear en el package raíz una nueva clase que nos va a permitir conectarnos con nuestra
54.
55. Esta clase va a extender de SQLiteOpenHelper que es la encargada de hacer la conexión
56.
59. Y por último debemos de generar el método constructor de la clase de la cual está heredando
60.
61.
cursorFActory que lo vamos a poner en null y tendría una versión de nuestra base de datos
65.
66. Al llamar a este constructor va a crear la base de datos y automáticamente se llama al método
oncreate que se va a encargar de generar las tablas, los scripts correspondientes de nuestras
entidades
67.
68. El método onUpgrade lo que hace es que cada vez q instalamos nuestra aplicación va a verificar
si existe ya una versión antigua de la misma base de datos, vamos a modificar los parámetros
70. Vamos a crear un final string (se usa final para definir que es una constante) donde vamos a
71.
72. Aquí ya tenemos el script necesario para la creación de la tabla
73. Ahora en el oncreate , el cual va a recibir como parámetro la base de datos creada
75.
76. Vamos a ejecutar dentro del oncreate la sentencia sql para crear la tabla
77.
78. Y en el onUpgrade por si volvemos a instalar la aplicación vamos a decirle q si encuentra una
79.
80.
81. Ya tenemos la estructura creada , con este constructor ya podemos irnos al main y dentro del
82.
84. En esta oportunidad vamos a hacer un registro sobre nuestra tabla usuario
85. Vamos a generar una activity que se llamará RegistroUsuariosActivity con S (empty views
activity)
86.
87.
88. Vamos a crear estas 02 dimens para los márgenes , podemos hacerlo con alt + enter
91.
100.
101.
102.
105. El botón registrar usuario obviamente nos va permitir guardar el usuario en la base de
datos
107. Vamos a implementar el método Onclick para que nos lleve del main activity al
108. Para esto vamos a agregar el método Onclick y sus respectivos ids a los botones del
main activity.xml
109.
110.
acuerdo al id del botón en donde se haga clic me llevará a la activity correspondiente, al final
realizamos una validación , en caso solo si el intent sea distinto a nulo sea inicialice
112.
115.
116. Vamos a crear dentro una clase que me permita almacenar constantes, la clase se va a
118. Se recomienda cuando trabajamos con SQLite en Android , trabajar con constantes que
van a representar los campos y las tablas de nuestra base de datos, básicamente los nombres de
119. Para ordenar un poco nuestro código , la constante de creación de la tabla la vamos a
122.
encuentra ahora
126.
127. Debemos de agregar también constantes de los nombres de los campos y de la tabla
128.
129. Y más abajo en a constante crear tabla usuario , reemplazaremos con las nuevas
136. Dentro del método registrar debo de decirle que abra la conexión para que me permita
137. Para eso estamos copiamos la instanciación del objeto del tipo ConexionSQLiteHelper
138.
141. La forma que nos brinda Android studio rápidamente para hacer el registro es utilizando
los contentvalues , eso funciona similar a como funciona un HAshmap o los archivo de
recursos (es decir una estructura donde guardamos alguna data mediante clave y valor ,
145.
146. Una vez instanciado el contentvalues con el método put vamos agregando la clave y el
147. Los campos son el dni , el nombre y el teléfono y los referenciamos mediantes las
149. Ahora vamos a insertar todo esto utilizando el método insert de nuestra SQLdatabase ,
este método nos devuelve un Dato Long dependiendo de unos datos que nostros les
enviemos , , por eso vamosa definir un avariable del tipo Long llamada idResultante donde l
después el nombre del campo que queremos que nos devuelva , en este caso el campo Id y
152.
159.
160. Cabe mencionar que se ha registrado muy fácilmente con contentvalues pero podría
162.
164. Vamos ahora a realizar el mismo proceso pero utilizando sentencias sql , entonces
166. Entonces , al igual que en el método anterior debemos de definir cual es la base de
datos y habilitarla para escritura , para esto vamos a copiar el código del método original
registrar usuario
167.
172. Lo que vamos a hacer es más o menos un insert into tbusuarios y le pasamos el dni ,
176. Finalmente debemos de indicarle a nuestro objeto db que ejecute el script sql
177.
182. Vemos q no arroja ningún error , lo cual nos puede indicar que todo ha salido ok, vamos
a validarlo a continuación
183. VIDEO 5 015_53. Como descargar BD SQLite y mostrarla con Sqlite Administrator
184. La idea no es consultar todavía mediante sqlite ,más bien vamos a utilizar una
herramienta que nos permita consultar los archivos del dispositivo y visualizar el contenido de
185. Para esto vamos a utilizar una herramienta que se llama SQLite Administrator
186.
187.
191.
195. Para esto vamos a ir l menú view – tools Windows – device file explorer
196.
199. Y dentro vamos avisualizar nuestra carpeta con el nombre del proyecto actual
200.
202.
203. Podemos ir al método registrarusurios SQL y vemos el nombre con el cual creamos ,a
base de datos
204.
206. y lo
210.
211.
212.
213. Visualizamos el contenido de la base
216. La idea es que ahora lo que registremos lo podamos consultar en este formulario
217.
231.
232.
233.
234.
240. Además vamos acapturar los eventos de los botones consultar actualizar y eliminar
241.
242.
246. Ahora vamos adfinir una lógica para nuestro botón consultar
247. Vamos a declarar el método consultar yvamoa dejar q Android studi lo cree
248.
250. Dentro del método consultar vamos a instanciar un objetom del tipo SQLiteDAtabase
252. Ahora vanmosa definir los parámetros de consulta , vamos a defnir que se pueda
253. Vamos , para indicar los parámetros de busqurda un arreglo del tipo string , en este caso
255. Cabe mencionar qel campoId que cavamos de inclur en el array parámetros
256. Ahora lo que debemos d dfinir cuales van aser los campos q no sva adevolver esa
consulta
257.
258. Ahora vamos a construir la estructura necesaria para poder enviar la información a
nuestra base de datos , apara eso hacemos uso de una clase cursor , donde utilizamos el objeto
realizar la consulta , a continuación pasamos el arreglo campos para inidcar los campos q
querems que nos devuelvan , clomo tercer parámetro el campo que le vamos a enviar para
realizar la consulta , este lo concatenamos con “=?” , esto indica que aquí vamos agregar el dni
del cual queremos realizar la consulta, lo va a obtener del array parámetros , el cual sería el sgte
parámetro , luego le agregamos tres vecdes null, que corresponderían a group by, Having y
259.
260.
261. Ahora vamos a indicarle al cursos que se pare en el primer registro de lo que nos está
devolviendo con Movefirst , que en este caso es solamente uno, con esto nos estamos
asegurando
262.
263. Ahora debemos pintar en los campos del cormularo del activity consulta usuarios lo que
264. Con settext asiganmos el texto que ns devuelva del primer campo que sería el nombre ,
268. Hasta aquí estríamos realizando la consulta pero que pasaría si realizamos la conslta de
269. Para gestionar seto vamos agregar un try catch y si captura algún error indicaremos en
271. A continuación voy a querer q mi formulario se limpie , para esto vamos a invocar al
273. Básicamente en el método limpira vamos a mnadar una cadena vacía a la propiedad text
278. Antes debemos agrgeagr lel código q nos lleve del botón consultar usuario al activity
288. Del método consulta orignal vamos a copiar el objeto db que permita el mod lectura de
documento q no existe
291.
292. Pero en el caso del objeto cursor va a ser diferente , vamos a usar queryraq , que como
294.
295. Basicamenet lo que vamos a hacer es un selec (mostrar lo que está comentado)
296.
297. Después al igual que el método anterior nos movemos al primer registro y pintamos los
299. Vemos q los dos métodos son prácticamenye igual , solo diferencia el cursor pero en el
306. Debemos definir que va a pasar cuando se haga click en estos botones , en el archivo
312. Dentro del método actualizar vamos a empezar con conectarnos a la base de datos y
314. Posteriormente podemos usar los mismos parámetros del método consultarsql
315.
316.
317. Y luego igual como rtrabajamos con el registro vamos a utilizar un contentvalues ,
recordemoos qe el contentvalues funciona como un hasmap , vamos a agregar los datos con
una clve y un valor, primero indicamos con la constante cual es el campo q deseo actualizar y el
sgte parámetro le indico desde donde , desde que edittext va aobtener el text con el q va a
319. Después de esto vamos a llamar al método update del objeto db, que se encargará pr
también se le envía cual va aser el campo que va aservir como clave para saber cual es el
registro a actualizar
320. Podríamos trabajar para q nos devolviera un valor entero como confirmación de la
322. Como decíamos no vamos a trabajar el retorno , solo un toast que nos indique que ya
se actualizó
323.
325.
328. Agregamos el método eliminarUsuario() dentro del método nVClic , asociado a la botón
330.
331.
332.
333. Dentro del método eliminar el proceso va a ser muy parecido , prmero habilitamos a
nuestra base de datos para q podamos escribir en ella y le paso un array con los parámetros de
335. Luego vamos a invocar al método delete del objeto db ,encargado de elimnar el
que contiene los parámetros por los cuales vamos aelimnar a un registro
336.
341.
342.
344.
345. tOdo se efectúa correctamente pero vamos a ncluir el método limpiar una vez despúes
de darle delete
346.
348.
349. VIDEO 09 Como llenar un spinner con información de la BD Sqlite
350. Ahora vmso a desarrollar la lógica para consultar la nformación y que se cargue en un
351.
352. Vamos acrea la lógica tambié para q nos llve a la activity qure contenga el spinner desde
en el oncreate
362.
363. Cae mencioanra q cuand seleccionemos en el spinner un registro ,se pntarán los text
views
364. Lo que vamso a ahacer es crear en juestrao consultacomboctivity.java son dos listas:
365. Un arraylist del tipo string que va arepresentar la información q voy a mostrar en el
367. Y agregaremos otro arraylist del tipo usuario que se llamará personasList
368.
369. Ahora debemos de configurara nuestra conexión a la base de datos que se llamará con y
oncreate
370.
oncreate y dejamos q Android studio lo cree , este método se encargará d llamara la base de
375. Ahora instanciamos un objeto del tipo usuario al cual llamaremos persona y por ahora lo
inciaremos en null
376.
380. Crearemos un cursor utilizando rawquery con sentencia sql , el cual nos devolverá tda la
infrmacion de la tabla
381.
383.
384. Instanciiamos u objeto llamdo persona del tipo usuario para ir llenando la información
385.
389.
390. Vamos a agregar logs por si queremos validar en consola la información registrada
391.
392. Después del while vamos a llamar a otro método llamado obtenerLista (y dejamos q
394. Ese método obtener lista nos va ayudar a construir la lista q se va a mostrar en el
398. Luego vamos a recorrer nuestra lista de objetos , aqu´pi vamos a asignar a la lista de
concatenar con el nombre y así iterando acragará n el combo todos los ids – concatenados con
los nombres
399.
construir un arrayAdapter (el cual es un componente que pemrite consumir listas o colecciones
403. Ejecutaremos la aplicación , pero antes debemos de agregar el ekl case para q nos lleve
407. Lo que vamos a ver a continuación es poder pintar las etiquetas según el nombre elgido
en el s´pinner
408. Para esto agregamos un listener al combo personas (se agrega con new y después ctrl +
411. Este método onItemselected se desencadena cuando selecconamos un ítem del spinner
, ene l caso de la psoicion debemos darle – 1 , porque la priemra posición la ocupa el texto
412. Vamos a gregarle una avlidación antes de que si la posición es diferente de cero loo cula
siginifca que no esta en la opción “selecione ” , en este acso mosrará los datos del usuario
seleccionado
413. Y en caso contrario no me debría seleccionar nada y debria limpir los editetxt
414.
415. Si probamos veremos que mostrara los datos del usuario selecconado en el spinner
421.
Enel onCreate
424.
425. Esta funcionalidad se va aparecer a la anterior , la del spinner , vamos atener q utilizar
dos listas un arraylist de tipo strin , para mosrarlo en el listview y otro arraylist del tio usuario
que lklamaremos con y que es el quen determina la conexión con la base de datos
428.
sqliteconexionHelper
430.
434. Declaramps a continuación un objeto del tip sqloitedatabase que llamaremos db y que
436. Crearemos una instancia de la clase usuario , que llamaremos usuario y que incialmente
440. Ahora analizando la consulta que vamos a realizar va atern la estructura select * fromn
usuarios
441.
442. Ahora haremos uso del cursor , el cual será igual a nuevo , vamos a usar rawquery que
permite usar sentnecias sql , donde la consulta será select * from y conctenamos con la
constante tbla_usuario
443.
445. A continuación implementamos un while que itere mientras el cursor de tipo usuario
tenga registros
446. Instanciamos un objto del tipo usuario , apara ir cargando lo que nos devuelva el cursor
448. Hasta aquí ya hicimos la consulta a la base de datos y llenamos el arraylist listausuarios
449. Ahora llamamos al metodo obteernerlista , el cual vamos a dejar q Android studio lo
implemente
450.
451. Este mtodo se vaa encargar de recorrer esta lista de usuarios y asignársela al arraylist de
tipo string que se llama listaInformacion, por lo que debemos instanciar un objeto de este tipo
de arraylist
452.
454. Mas bien vamos arecorreer mediante un for el arraylist lista usuarios
455. Para ir agregando al arraylist de tipo cadena que se llama la concatenación del id y del
458. Para esto utilizamos un adapter , al acual se los asignamos después al listview
459.
460.
467.
468. Ahora vamos a configurar para q cuando hagamos clic en alguno de los elemnntos del
469. Para esto debemos implementar un setonItemclicklistener (se autogenera el código con
ctrl + espacio)
472. Dentro guardamos en un variable candena la convcatenacion del dni mas el nombre mas
477.
478.
479.
480.