1 00:00:00,000 --> 00:00:06,940 la grabación y voy a suponer que estoy grabando, ¿de acuerdo? Cuando acabe pues la subo a alguna parte 2 00:00:06,940 --> 00:00:12,179 porque ya no me están dejando grabar aquí, no se puede grabar aquí, por lo que sea, lo han quitado. 3 00:00:13,720 --> 00:00:18,440 Preguntaré, por si acaso, a quién sabe algo. Vamos, tiene pinta de que no... 4 00:00:18,440 --> 00:00:22,519 O sea, han decidido que era demasiado fácil dar clase grabando. 5 00:00:23,480 --> 00:00:28,320 Vale, pues... Ah, si otros profesores consiguen grabar, avisadme. 6 00:00:28,320 --> 00:00:30,199 no sé si vais a acoger a otros profesores 7 00:00:30,199 --> 00:00:31,820 y lo consigue él, pues 8 00:00:31,820 --> 00:00:34,079 decidme que lo hacen y busco 9 00:00:34,079 --> 00:00:35,840 con mucho interés, a ver qué tal 10 00:00:35,840 --> 00:00:37,679 Sí, lo que pasa es que, por ejemplo 11 00:00:37,679 --> 00:00:40,119 el lunes tuve yo 12 00:00:40,119 --> 00:00:41,659 la tutoría de 13 00:00:41,659 --> 00:00:44,320 de programación 14 00:00:45,140 --> 00:00:45,820 de servicios 15 00:00:45,820 --> 00:00:48,579 y el profesor es que no graba 16 00:00:48,579 --> 00:00:49,200 por lo cual 17 00:00:49,200 --> 00:00:52,079 y es que solo estoy en esa 18 00:00:52,079 --> 00:00:53,820 y en inglés, aparte de la 19 00:00:53,820 --> 00:00:54,759 de la de la malla 20 00:00:54,759 --> 00:00:58,439 Pues bueno, pues no sé 21 00:00:58,439 --> 00:01:21,379 Vale, pues me salto al 7, presencia de información, que esto hay que grabar. Bueno, decidme que hay que tener datos en alguna parte. ¿Alguna pregunta? ¿Alguna cosa que queráis decir en vez de ir yo un poco a lo loco por ahí? Tanto por el chat como por... Estoy sin audio. 22 00:01:21,379 --> 00:01:26,560 Vale, pues 23 00:01:26,560 --> 00:01:27,840 básicamente 24 00:01:27,840 --> 00:01:29,680 lo más así 25 00:01:29,680 --> 00:01:32,500 que te podía preguntar sería lo del tema 26 00:01:32,500 --> 00:01:34,299 de SQLite 27 00:01:34,299 --> 00:01:36,120 que tampoco explica mucho 28 00:01:36,120 --> 00:01:37,680 en la teoría 29 00:01:37,680 --> 00:01:40,319 pero vamos, entiendo que lo iremos 30 00:01:40,319 --> 00:01:41,680 viendo en próximos temas 31 00:01:41,680 --> 00:01:42,099 Pues 32 00:01:42,099 --> 00:01:45,680 no, fíjate 33 00:01:45,680 --> 00:01:48,180 lo vas viendo en próximos módulos 34 00:01:48,180 --> 00:01:49,560 si no lo estás viendo, ya 35 00:01:49,560 --> 00:01:51,379 SQLite es SQL 36 00:01:51,379 --> 00:01:52,739 Entonces 37 00:01:52,739 --> 00:01:54,819 Eso sí 38 00:01:54,819 --> 00:01:57,480 Claro, pues simplemente con decirte 39 00:01:57,480 --> 00:01:59,560 Cómo se abre el SQLite, pues ya digamos 40 00:01:59,560 --> 00:02:01,000 Que se apaña a usted 41 00:02:01,000 --> 00:02:02,920 Vamos a probar un ejemplo 42 00:02:02,920 --> 00:02:05,140 Vale, o sea, que con lo que viene en la teoría no es vale 43 00:02:05,140 --> 00:02:06,319 Claro, en teoría ya vale 44 00:02:06,319 --> 00:02:08,819 A ver, bueno, yo precisamente 45 00:02:08,819 --> 00:02:11,080 Tengo hecho un ejemplo 46 00:02:11,080 --> 00:02:12,879 Tengo una aplicación 47 00:02:12,879 --> 00:02:14,680 Así que 48 00:02:14,680 --> 00:02:16,120 Esto no lo he hecho yo 49 00:02:16,120 --> 00:02:18,180 ¿Cómo que es? 50 00:02:19,560 --> 00:02:33,680 ¿Qué te voy a hacer? ¿Commit? No sé yo manejar esto. Bueno, da igual. Me he hecho una aplicación que lo que hace precisamente es eso, es manejar el SQLite para ver un poquito cómo va. 51 00:02:33,680 --> 00:02:43,639 voy a arrancarla la toca arrancar en el teléfono de verdad porque se me ha roto el pc bueno sólo 52 00:02:43,639 --> 00:02:48,860 tengo 8 gigas y éste no aguanta con todo me pongo a grabar estoy un poco preocupado a ver qué tal 53 00:02:48,860 --> 00:02:57,919 me va la memoria porque bueno como veis por aquí arriba pues tengo 8 y he gastado 6 pero ya tengo 54 00:02:57,919 --> 00:02:59,900 3.5 de swap, quiere decir que tengo 55 00:02:59,900 --> 00:03:01,819 mucha parte de mi ordenador metido a disco 56 00:03:01,819 --> 00:03:03,639 tengo el Firefox, el 57 00:03:03,639 --> 00:03:04,500 OBS 58 00:03:04,500 --> 00:03:07,819 el estudio, el Gradle 59 00:03:07,819 --> 00:03:10,020 y todo eso pues 60 00:03:10,020 --> 00:03:12,139 se nota 61 00:03:12,139 --> 00:03:14,340 ¿y el estudio lo consigues correr con 8 GB? 62 00:03:14,879 --> 00:03:15,599 pues mira, aquí está 63 00:03:15,599 --> 00:03:17,240 el estudio, ahora hay un nuevo 64 00:03:17,240 --> 00:03:20,159 el estudio es el que está aquí arriba, es el que está puesto 65 00:03:20,159 --> 00:03:22,180 tiene 6 de virtual 66 00:03:22,180 --> 00:03:24,240 y 2 de residente 67 00:03:24,240 --> 00:03:25,060 o sea 68 00:03:25,060 --> 00:03:27,439 2 GB de RAM 69 00:03:27,439 --> 00:03:29,719 realmente RAM y luego 6 GB 70 00:03:29,719 --> 00:03:31,599 más que como no caben en RAM van a disco 71 00:03:31,599 --> 00:03:33,580 pero si esa parte tengo suerte 72 00:03:33,580 --> 00:03:35,800 y no la uso, pues no pasa nada 73 00:03:35,800 --> 00:03:38,080 si hay suerte 74 00:03:38,080 --> 00:03:39,699 vamos aquí está colocado por memoria 75 00:03:39,699 --> 00:03:41,419 normalmente suele ser 76 00:03:41,419 --> 00:03:42,759 no, no, estoy justo 77 00:03:42,759 --> 00:03:45,860 estoy justito, sí, no estoy sobrado 78 00:03:45,860 --> 00:03:47,699 bueno, pues ya lo he lanzado 79 00:03:47,699 --> 00:03:49,460 y no lo podéis ver porque está en un teléfono 80 00:03:49,460 --> 00:03:51,539 pero con un poco de suerte yo vengo 81 00:03:51,539 --> 00:03:52,780 ¿dónde tengo la otra ventana? 82 00:03:52,780 --> 00:04:10,879 A ver, yo no sé ni qué ventanas tengo. Me falta una ventana por alguna parte. Ah, es que tengo dos con él este. Bueno, da igual. Pues tengo aquí el SCRECOPY, que esto se me ve el teléfono de verdad. Esto no es un lado, esto es un teléfono de verdad que tengo aquí al lado. 83 00:04:10,879 --> 00:04:14,319 Cuando le doy así, ¿veis el dedo? 84 00:04:14,599 --> 00:04:16,300 Que no va con el ratón 85 00:04:16,300 --> 00:04:17,060 Que está ahí arriba 86 00:04:17,060 --> 00:04:19,180 Tengo un teléfono de verdad 87 00:04:19,180 --> 00:04:22,180 Esta es una aplicación que tengo 88 00:04:22,180 --> 00:04:24,660 Donde voy haciendo todas las pruebas que me van haciendo falta 89 00:04:24,660 --> 00:04:26,220 Como veis, cada vez que me hace falta una prueba 90 00:04:26,220 --> 00:04:27,439 Le meto un botón nuevo 91 00:04:27,439 --> 00:04:29,480 Allá va la cosa 92 00:04:29,480 --> 00:04:31,339 Por ejemplo, una tonta, hacer llamada 93 00:04:31,339 --> 00:04:32,920 Pues te va y llama 94 00:04:32,920 --> 00:04:33,500 ¿Vale? 95 00:04:35,600 --> 00:04:36,040 Cancelar 96 00:04:36,040 --> 00:04:38,379 Vale, pues aquí tengo la prueba 97 00:04:38,379 --> 00:04:39,879 De ese culite 98 00:04:39,879 --> 00:04:56,779 Le voy a dar ahora, primero vamos a ver lo que hace el código, a ver qué tal. ¿Qué hace mi código? Bueno, pues el código, este es el onCreate, aquí tengo la asignación a cada botón, entonces el botón SQLite, pues lo que hace es la prueba SQLite. 99 00:04:56,779 --> 00:05:11,879 Me voy a la prueba SQLite con control B y esto es lo que hago. Lo primero que hago es sacar un new db. ¿Esto qué es? Me voy a la clase db con control B. 100 00:05:11,879 --> 00:05:29,540 Bien, esta es la clase de B, que es una, voy a quitar esto de aquí, es un SQLite Open Helper, que viene en el temario. Uno puede manejar SQLite sin este SQLite Open Helper, sin ningún problema, pero bueno, este tiene algunas cositas que pueden venir bien. 101 00:05:29,540 --> 00:05:43,920 Bien, en el constructor hay que pasar como siempre un contexto, para todo hace falta un contexto, un nombre y una versión. 102 00:05:44,860 --> 00:05:51,899 Y este ronhalder le podría intentar hacer algo con él, nunca ha hecho nada con él. 103 00:05:52,560 --> 00:05:56,800 Se llama super como tiene que ser y digo, eh, que me están haciendo una base de datos. 104 00:05:56,800 --> 00:06:11,180 ¿Qué hace el Open Helper? Se preocupa en abrir la base de datos si ya existe o crearla si no existe. Si la tiene que crear, pues él solo pasa por aquí, por este método, por el OnCreate. 105 00:06:11,879 --> 00:06:16,180 En el onCreate aprovecho para hacer mis tablas. 106 00:06:16,540 --> 00:06:16,959 ¿Las veis aquí? 107 00:06:18,379 --> 00:06:18,579 Sí. 108 00:06:19,019 --> 00:06:20,920 Aquí tengo un exe que se cuele y aquí hago mis tablas. 109 00:06:21,019 --> 00:06:23,939 Entonces, el onCreate es el método que me llaman con la base de datos, 110 00:06:24,019 --> 00:06:27,060 con la conexión de la base de datos ya abierta para que yo cree cosas. 111 00:06:27,579 --> 00:06:29,660 Podría hacer cualquier otra cosa, por ejemplo, también insertar datos, 112 00:06:29,839 --> 00:06:31,120 pero en principio es para crear tablas. 113 00:06:31,860 --> 00:06:32,040 ¿Vale? 114 00:06:32,959 --> 00:06:39,000 Después, cuando ya, si resulta que en algún momento cambio la aplicación 115 00:06:39,000 --> 00:06:40,779 y yo cambio la versión de la aplicación, 116 00:06:41,180 --> 00:07:01,339 Aquí, en vez de pasar un 1, pasaría un 2, por ejemplo, en esta database. Y entonces, en vez de llamarme a onCreate, si ya existe la base de datos, llamarían onUpgrade. ¿Qué hace eso? Pues mira, te dicen, resulta que tenemos una base de datos de esta versión, que tú sabrás cuál es. 117 00:07:01,339 --> 00:07:08,939 y ahora queremos tener y ahora queremos tener una de esta nueva versión que tú sabrás cuáles 118 00:07:08,939 --> 00:07:13,560 porque todo es el programador pues apáñate para hacer los cartas de tables los dos tables y los 119 00:07:13,560 --> 00:07:20,459 alterables que te hagan falta para que funcione es un soporte como veis rudimentario de versiones 120 00:07:20,459 --> 00:07:27,399 pero bueno al menos está colocado y tienes que ir está ahí puesto como veis no tengo previsto 121 00:07:27,399 --> 00:07:31,600 ningún on upgrade porque no tengo previsto tener más versiones de la aplicación vale como se usa 122 00:07:31,600 --> 00:07:37,519 el sql élite pues aquí tengo mi new debe que es este señor que hemos visto antes este que me 123 00:07:37,519 --> 00:07:42,639 ayuda y le pongo de nombre b de otro por poner algún nombre yo no sé por qué le puse este voy 124 00:07:42,639 --> 00:07:52,600 a cambiárselo voy a ponerle solamente vd y ahora lanzamos otra vez y luego de este debe de aquí 125 00:07:52,600 --> 00:07:56,959 pues como podéis puedo conseguir una base de datos que se pueda escribir una base datos que se pueda 126 00:07:56,959 --> 00:08:02,420 leer pues yo cojo la que se puede escribir y aquí me lo apuntó esto es como la conexión 127 00:08:02,420 --> 00:08:09,839 vale es la conexión abierta para ello poder hacer aquí órdenes este sqlite que por cierto que no sé 128 00:08:09,839 --> 00:08:14,839 por qué lo tengo aquí que qué tipo tiene esto esto es un sqlite de data base vale porque es 129 00:08:14,839 --> 00:08:18,120 como sea una secuencia de tabas a ver que tiene un sqlite de data base que es la verdad que no 130 00:08:18,120 --> 00:08:25,399 he acordado con que tenía control extra control 20 pues esto es un sqlite de data base con un 131 00:08:25,399 --> 00:08:33,159 control 0 pues es evita data base pues tiene begin transacción tiene compa y el statement tiene 132 00:08:33,159 --> 00:08:39,919 delete data base delete al final que eso es que lo que más se usa pues empezar transacciones o 133 00:08:39,919 --> 00:08:47,659 ejecutar cosas estaban por aquí los ex ex en alguna parte aquí está ese que se cuele ese que se cuele 134 00:08:47,659 --> 00:08:53,659 con parámetros executa se cuelen que imagino es algo mismo que exec muy seguramente esto ya nos 135 00:08:53,659 --> 00:08:59,299 tiene que sonar pues por ejemplo de acceso a datos y claro el acceso a datos es un acceso 136 00:08:59,299 --> 00:09:07,019 a datos me imagino que estáis mirando algo como jdbc o jpa o no sé qué estáis viendo esto se 137 00:09:07,019 --> 00:09:12,919 puede lo que pasa es que era más que nada por el tema de comandos y demás ya específicos del uso 138 00:09:12,919 --> 00:09:23,299 en android como cada implementación tiene su método para pasar los scripts de tanto de creación como 139 00:09:23,299 --> 00:09:25,379 añadir datos y demás, por ejemplo, para 140 00:09:25,379 --> 00:09:27,019 creación de tablas y 141 00:09:27,019 --> 00:09:29,620 todo eso. Si te refieres a SQL, el SQL como tal 142 00:09:29,620 --> 00:09:31,440 es el mismo. Si te refieres a 143 00:09:31,440 --> 00:09:33,200 los métodos... Sí, los comandos de 144 00:09:33,200 --> 00:09:35,059 insert o create table y todo eso. 145 00:09:35,059 --> 00:09:37,100 Eso es SQL, SQL. Entonces 146 00:09:37,100 --> 00:09:39,659 lo normal es que casi todo te funcione. 147 00:09:39,779 --> 00:09:41,259 Casi todo lo que sepas de MySQL 148 00:09:41,259 --> 00:09:43,779 o de Oracle te va a funcionar. 149 00:09:43,779 --> 00:09:45,519 Vale. Prácticamente todo. 150 00:09:46,039 --> 00:09:46,679 Entonces, pues 151 00:09:46,679 --> 00:09:49,820 por ahí digamos que no es preocupante. 152 00:09:50,179 --> 00:09:51,100 Cierro esto entonces 153 00:09:51,100 --> 00:09:53,860 y ya no sé dónde estaba, vamos a ver 154 00:09:53,860 --> 00:09:55,940 voy para abajo otra vez, que yo estaba 155 00:09:55,940 --> 00:09:57,840 tranquilamente, yo estoy 156 00:09:57,840 --> 00:09:59,460 me he pasado, yo estaba aquí 157 00:09:59,460 --> 00:10:01,559 entonces fue bueno, pues una vez que 158 00:10:01,559 --> 00:10:03,659 tengo este, mi SQLite, que es como 159 00:10:03,659 --> 00:10:05,820 mi connex, equivalente más o menos 160 00:10:05,820 --> 00:10:07,840 al connection de un JDBC 161 00:10:07,840 --> 00:10:08,600 si lo habéis dado 162 00:10:08,600 --> 00:10:11,620 pues hago lo que yo quiera 163 00:10:11,620 --> 00:10:13,580 con ello, por ejemplo, aquí tengo 164 00:10:13,580 --> 00:10:15,639 un array con datos 165 00:10:15,639 --> 00:10:17,519 súper tontos 166 00:10:17,519 --> 00:10:18,879 que encajan 167 00:10:18,879 --> 00:10:27,360 con esta tabla que he hecho que tiene un íntegre, un nombre y un valor íntegre también, 168 00:10:27,360 --> 00:10:33,980 pues bueno, vamos ahora a meterlos. Me hago aquí un bucle for y lo ejecuto así. 169 00:10:35,620 --> 00:10:41,799 Esto me gusta marcarlo porque ya os lo han contado en acceso a datos que los parámetros se pasan 170 00:10:41,799 --> 00:10:46,860 como se pasan los parámetros. Mira, esto sí que me parece que en JDBC es con un dos puntos, 171 00:10:46,860 --> 00:10:54,600 no interrogación un parámetro y no recuerdo manera con interrogación también pero tenías 172 00:10:54,600 --> 00:11:01,200 que meterle luego lo de la variable lo que significaba cada uno y demás respecto a los 173 00:11:01,200 --> 00:11:09,360 valores que se para meter no sé qué aquí como puedes ver todos los datos van en un array que 174 00:11:09,360 --> 00:11:15,600 va sacando uno a uno va sacando uno a uno de este array pues por ejemplo la primera vuelta es esto 175 00:11:15,600 --> 00:11:16,679 la segunda vuelta es esto 176 00:11:16,679 --> 00:11:19,440 y la tercera vuelta es esto. Resultado, pues 177 00:11:19,440 --> 00:11:21,759 que meto estos datos 178 00:11:21,759 --> 00:11:23,159 en la tabla. 179 00:11:23,460 --> 00:11:24,320 Aquí le pongo un recalcio. 180 00:11:24,320 --> 00:11:27,620 Y automáticamente está detectando el tipo de dato, ¿no? 181 00:11:28,000 --> 00:11:28,700 Sí, claro. 182 00:11:29,139 --> 00:11:30,320 Sí, porque 183 00:11:30,320 --> 00:11:33,500 sabe qué dato es el que está en la 184 00:11:33,500 --> 00:11:35,440 base de datos, porque pasa una cosa en la base de datos 185 00:11:35,440 --> 00:11:37,620 y luego por reflexión puede saber 186 00:11:37,620 --> 00:11:39,059 qué tipo de cosa le llega. 187 00:11:39,700 --> 00:11:41,659 Tú a un object le pones .class 188 00:11:41,659 --> 00:11:43,220 o .instanceof o algo así 189 00:11:43,220 --> 00:11:44,440 y sabes qué es. 190 00:11:44,440 --> 00:11:48,659 Entonces, entre que sabéis lo que es en Java y sabéis lo que es en otro lado, pues él se apaña. 191 00:11:48,740 --> 00:11:49,539 O sea, esto no lo hacemos nosotros. 192 00:11:49,659 --> 00:11:50,980 Él se apaña, el caso es que se puede. 193 00:11:51,779 --> 00:11:52,299 Y él se apaña. 194 00:11:53,100 --> 00:11:55,419 Esto sería una forma, pues, como de meter datos, ¿vale? 195 00:11:57,600 --> 00:11:58,580 ¿Cómo se pueden sacar? 196 00:11:58,580 --> 00:12:05,700 Pues con el cursor que también habréis visto, imagino, en el concepto en JDBC. 197 00:12:06,200 --> 00:12:09,279 Tú cuando haces una query, pues te dan algo parecido a un cursor. 198 00:12:09,279 --> 00:12:26,529 Aquí lo mismo, pues tengo una query que es... dámelo todo. El cursor, pues como JDBC, lo primero que hace es avanzarlo, o sea, dame el siguiente y hay que avanzar al siguiente hasta que se acaba. 199 00:12:26,529 --> 00:12:27,950 Pues while moveNext 200 00:12:27,950 --> 00:12:30,690 ¿Cómo le sacan datos del cursor? 201 00:12:30,889 --> 00:12:31,610 Pues con un get 202 00:12:31,610 --> 00:12:35,090 GetString, getInt, getDate 203 00:12:35,090 --> 00:12:35,929 Get lo que sea 204 00:12:35,929 --> 00:12:38,409 Una cosa importante, me parece que es diferente 205 00:12:38,409 --> 00:12:39,750 Respecto de JDBC 206 00:12:39,750 --> 00:12:41,990 Es que en JDBC el primer parámetro 207 00:12:41,990 --> 00:12:44,289 La primera columna de un cursor 208 00:12:44,289 --> 00:12:45,809 Es la columna 1, ¿verdad? 209 00:12:48,330 --> 00:12:50,330 Pues aquí la primera columna es la columna 0 210 00:12:50,330 --> 00:12:52,070 O sea, que empieza 211 00:12:52,070 --> 00:12:53,210 Como una raíz y tal 212 00:12:53,210 --> 00:12:55,090 Aquí empieza así, mira, si vas a getString 213 00:12:55,090 --> 00:12:55,870 Control-B 214 00:12:55,870 --> 00:12:58,649 mira lo que pone aquí 215 00:12:58,649 --> 00:13:00,909 intranje from 0 216 00:13:00,909 --> 00:13:03,289 es una anotación que te indica 217 00:13:03,289 --> 00:13:04,889 que empieza en 0, bueno también lo pone 218 00:13:04,889 --> 00:13:06,909 también lo pone aquí en el 219 00:13:06,909 --> 00:13:09,509 en la documentación, ¿no? pero bueno 220 00:13:09,509 --> 00:13:11,149 aquí se ve claramente 221 00:13:11,149 --> 00:13:11,929 que empieza en 0 222 00:13:11,929 --> 00:13:13,409 el asunto 223 00:13:13,409 --> 00:13:16,970 vale, y al final pues 224 00:13:16,970 --> 00:13:19,090 como veis esto por una parte mete 225 00:13:19,090 --> 00:13:21,309 por otra parte saca, pero ¿por dónde lo saco? 226 00:13:21,389 --> 00:13:23,070 pues por el log.de porque no 227 00:13:23,070 --> 00:13:24,509 tengo ganas de hacer, como es una prueba 228 00:13:24,509 --> 00:13:26,370 así tontorrona rápida 229 00:13:26,370 --> 00:13:28,210 no tengo ganas de hacer una interfaz en el 230 00:13:28,210 --> 00:13:29,950 Android para que se vea 231 00:13:29,950 --> 00:13:32,490 lo saco por el log y lo miro tranquilamente con el 232 00:13:32,490 --> 00:13:34,509 ADB, bueno pues voy a ejecutarlo 233 00:13:34,509 --> 00:13:36,429 vale, vamos a ver 234 00:13:36,429 --> 00:13:37,769 este era mi ordenador 235 00:13:37,769 --> 00:13:40,269 lo pongo que se quede 236 00:13:40,269 --> 00:13:42,450 en more actions 237 00:13:42,450 --> 00:13:44,389 aquí, que se quede siempre arriba 238 00:13:44,389 --> 00:13:46,450 aunque me vaya, entonces pues le voy a dar a ejecutar 239 00:13:46,450 --> 00:13:47,830 entonces ahí al mismo tiempo 240 00:13:47,830 --> 00:13:50,269 voy a sacar aquí una consola 241 00:13:50,269 --> 00:13:52,590 para este lado, esto me lo cargo 242 00:13:52,590 --> 00:13:54,309 y voy a poner ADB logcat 243 00:13:54,309 --> 00:13:57,029 que ya sabéis que esto saca pues todo el logcat 244 00:13:57,029 --> 00:13:59,350 no lo voy a ver tampoco en el estudio 245 00:13:59,350 --> 00:14:01,649 porque así es más ligerito, tengo que ahorrar memoria 246 00:14:01,649 --> 00:14:02,470 vale 247 00:14:02,470 --> 00:14:04,750 para quedarme solamente con lo que me interesa 248 00:14:04,750 --> 00:14:06,970 pues voy a hacerlo 249 00:14:06,970 --> 00:14:09,090 voy a hacer un grep prueba securite 250 00:14:09,090 --> 00:14:11,250 porque este tag 251 00:14:11,250 --> 00:14:13,029 que estoy poniendo, este tag 252 00:14:13,029 --> 00:14:14,110 control B 253 00:14:14,110 --> 00:14:16,049 es prueba securite 254 00:14:16,049 --> 00:14:19,409 así que lo voy a mirar así 255 00:14:19,409 --> 00:14:21,049 así lo miro 256 00:14:21,049 --> 00:14:22,870 bueno pues 257 00:14:22,870 --> 00:14:24,190 ahí ponen create porque está de antes 258 00:14:24,190 --> 00:14:34,309 esto no va a pasar en cuanto aquí voy a darle a ejecutar si empieza a hacer sus cosas y a ver 259 00:14:34,309 --> 00:14:54,960 cuándo sale de él este que tenía así que habrá que esperarse se ha cargado está instalando bueno 260 00:14:54,960 --> 00:15:02,200 por lo primero este on create que sale aquí donde está pues está simplemente en el on create de la 261 00:15:02,200 --> 00:15:07,299 actividad, no tiene ningún misterio ni está relacionado con SQLite. Vamos a ver lo que 262 00:15:07,299 --> 00:15:11,980 pasa cuando doy al botón ejecuta SQLite, que hace todo lo que hemos visto antes. Plonk. 263 00:15:12,700 --> 00:15:18,059 Bueno, pues esto es lo que sale. ¿Qué ha salido? Pues nada, se crea una base de datos 264 00:15:18,059 --> 00:15:24,779 con nombre bd. ¿Dónde se escribe eso? Pues como llamo a prueba ficheros, control b, en 265 00:15:24,779 --> 00:15:31,440 prueba ficheros, ah no, perdón, me he confundido, llamo a prueba SQLite, hago este db y este 266 00:15:31,440 --> 00:15:39,720 debe lo primero que hace es decir que se crea los datos con nombre aquí está en ese constructor lo 267 00:15:39,720 --> 00:15:45,120 siguiente que dice es he creado las tablas en un create porque porque ha pasado por aquí ha visto 268 00:15:45,120 --> 00:15:52,320 que no existía la base de datos y la ha creado así que ha hecho aquí un creador bien y después 269 00:15:52,320 --> 00:15:58,179 que hago pues aquí sale ejecutando este ejecutan se ejecutan este inmen esto que es cada una de 270 00:15:58,179 --> 00:16:07,600 las vueltas que doy aquí. Aquí estoy metiendo los datos. Y aquí es donde pongo esa traza de ahí. 271 00:16:08,700 --> 00:16:16,000 Y luego me dedico a leer en la query, pues, hola, adiós, ¿qué tal? ¿Por qué sale eso? Porque estoy preguntando 272 00:16:16,000 --> 00:16:25,600 por id, nombre, valor, y luego estoy preguntando por la columna 1. 0, 1. Así que solamente saco la columna 1, 273 00:16:25,600 --> 00:16:47,720 Que he metido, hola, adiós, ¿qué tal? Pues, hola, adiós, ¿qué tal? Hasta aquí ningún misterio, ¿no? Ya sabemos crear bases de datos, sabemos escribir ellas y sabemos leer. Lo mismo que puedo hacer un INSEE, pues puedo hacer un DELETE y puedo hacer un UPDATE y lo que yo quiera. 274 00:16:47,720 --> 00:16:50,039 lo siguiente 275 00:16:50,039 --> 00:16:51,919 ya si que tiene un poco más de misterio 276 00:16:51,919 --> 00:16:53,840 voy a volver a darle al botón 277 00:16:53,840 --> 00:16:55,440 ejecutar security 278 00:16:55,440 --> 00:16:57,600 uh, que ha pasado 279 00:16:57,600 --> 00:16:59,899 pues mira 280 00:16:59,899 --> 00:17:01,320 que los datos ya existen 281 00:17:01,320 --> 00:17:03,639 aproximadamente, dice 282 00:17:03,639 --> 00:17:06,279 ha fallado no se que, y porque ha fallado 283 00:17:06,279 --> 00:17:07,619 un unique 284 00:17:07,619 --> 00:17:10,339 claro, normal 285 00:17:10,339 --> 00:17:12,400 resulta que yo ya he metido 286 00:17:12,400 --> 00:17:13,599 un 1, 2, 3 287 00:17:13,599 --> 00:17:15,500 y resulta que 288 00:17:15,500 --> 00:17:17,460 el id era el primer id 289 00:17:17,460 --> 00:17:43,380 Así que como es la primary key, pues no puedo repetir el 1, ni el 2, ni el 3. Esto es lo razonable. Pillo el error aquí. Estoy pillando, aquí hago el exec, aquí se me pilló el error y digo, ha fallado. Fallará pues tres veces. Pues una, dos y tres. Pero bueno, los datos son los que había antes también. 290 00:17:46,109 --> 00:17:50,109 Bueno, voy a intentar juntar los dos mundos ahora, el SQLite y los ficheros. 291 00:17:50,289 --> 00:17:51,069 ¿Esto dónde para? 292 00:17:51,450 --> 00:17:54,650 Al final, esto vale, se guarda en una base de datos, pero ¿esto dónde está? 293 00:17:54,849 --> 00:17:56,670 Pues está realmente en un SQLite. 294 00:17:57,569 --> 00:18:00,509 Imagino que habréis probado aquí el Device Explorer. 295 00:18:01,029 --> 00:18:02,509 Voy a quitar aquí el Android. 296 00:18:03,829 --> 00:18:06,690 Que sale en esta pestañita por aquí abajo o en alguna parte. 297 00:18:07,009 --> 00:18:07,809 ¿Qué es el Device Explorer? 298 00:18:07,809 --> 00:18:12,109 Pues esto es el directorio, es como el sistema de ficheros del Android. 299 00:18:12,650 --> 00:18:13,529 De aquí dentro. 300 00:18:14,390 --> 00:18:14,910 Es el mismo. 301 00:18:15,329 --> 00:18:17,369 Y aquí empieza 302 00:18:17,369 --> 00:18:19,470 Pues lo más 303 00:18:19,470 --> 00:18:20,789 Divertido, digamos 304 00:18:20,789 --> 00:18:23,289 ¿Dónde está? Al final ese culito es un fichero 305 00:18:23,289 --> 00:18:25,109 ¿Dónde está? No sé si habéis 306 00:18:25,109 --> 00:18:26,789 Tenido oportunidad de buscarlo 307 00:18:26,789 --> 00:18:30,220 Seguramente, ¿no? 308 00:18:30,220 --> 00:18:32,380 Lo estuve mirando, pero no me acuerdo dónde era 309 00:18:32,380 --> 00:18:33,880 ¿Dónde lo dejaba? 310 00:18:34,180 --> 00:18:35,819 Bueno, pues a ver, que me he cargado esto un momento 311 00:18:35,819 --> 00:18:37,559 Pues sí que es cierto que estuve cacharreando yo 312 00:18:37,559 --> 00:18:39,839 Con lo de mover los ficheros 313 00:18:39,839 --> 00:18:41,619 Para ver los errores que daba y todo eso 314 00:18:41,619 --> 00:18:42,859 Claro, pues mira 315 00:18:42,859 --> 00:18:45,319 Como fue hace unas semanas 316 00:18:45,319 --> 00:18:47,079 ya le he perdido la pista. 317 00:18:47,619 --> 00:18:49,000 O sea, es cuando se junta con la otra 318 00:18:49,000 --> 00:18:51,200 prueba que tengo por aquí. Aquí tengo una prueba 319 00:18:51,200 --> 00:18:53,299 que pone ficheros. Le doy y vamos a mirar 320 00:18:53,299 --> 00:18:54,119 lo que pone, ¿vale? 321 00:18:56,119 --> 00:18:57,259 ¿Qué he hecho en eso que pone 322 00:18:57,259 --> 00:18:59,220 ficheros? Pues, como estáis viendo, 323 00:18:59,359 --> 00:19:01,240 aquí trasteo yo con las 324 00:19:01,240 --> 00:19:02,480 llamadas que vienen en la 325 00:19:02,480 --> 00:19:04,380 en la 326 00:19:04,380 --> 00:19:07,180 teoría, ¿no? Con el getExternal 327 00:19:07,180 --> 00:19:08,759 storagePublishDirectory, 328 00:19:08,980 --> 00:19:11,019 storageDirectory, getAttaDirectory 329 00:19:11,019 --> 00:19:13,299 y getExternalFilesDir. 330 00:19:15,319 --> 00:19:36,799 ¿Qué hace este primero? Bueno, pues la verdad es que se ha complicado un poco con las versiones de Android según ha ido pasando el tiempo, porque antes cuando tú tenías un Android venía sin tarjeta, luego el Android podía tener una tarjeta, luego el Android podía tener varias tarjetas, luego el Android, el aplicativo tenía una tarjeta y si no tenía una tarjeta se emulaba dentro de la memoria normal del Android. 331 00:19:36,799 --> 00:19:44,660 el resultado que tenemos ahora es que un android siempre piensa que tiene una tarjeta aunque 332 00:19:44,660 --> 00:19:50,859 generalmente esa tarjeta está en la memoria que no es tarjeta que la interna y luego se 333 00:19:50,859 --> 00:19:59,539 pueden poner tarjetas de verdad adicionales es un es un desastre el punto de vista que te da 334 00:19:59,539 --> 00:20:06,099 este directorio este este la llamada te da esa tarjeta que siempre tiene que estar por defecto 335 00:20:07,059 --> 00:20:08,259 Siempre tiene que haber una tarjeta. 336 00:20:08,880 --> 00:20:09,779 Aunque no tengas tarjeta. 337 00:20:09,940 --> 00:20:12,480 Yo os prometo que ahora mismo el teléfono que tengo no tiene tarjeta. 338 00:20:12,640 --> 00:20:14,299 Pero este me da un directorio. 339 00:20:14,480 --> 00:20:14,900 Vais a ver. 340 00:20:15,400 --> 00:20:16,839 El external storage que me da. 341 00:20:18,220 --> 00:20:19,059 A ver dónde estaba. 342 00:20:19,319 --> 00:20:24,380 El external storage que me da es barra estoraje, barra emulate, barra cero. 343 00:20:25,819 --> 00:20:29,039 Os creéis, me imagino con esto, que es que no hay tarjeta. 344 00:20:29,480 --> 00:20:31,160 Es emulada la tarjeta. 345 00:20:31,779 --> 00:20:32,680 Pero tiene que estar. 346 00:20:33,160 --> 00:20:34,579 Porque si no, Android no funciona. 347 00:20:34,579 --> 00:20:48,799 Se piensa que siempre tiene una tarjeta. Si tuviera tarjetas de verdad, ¿dónde saldrían? Aquí. Me saldrían en Get External Files DIRS. Saldría aquí. No sé si tenéis un teléfono de votos con tarjeta o sin tarjeta. No tengo ni idea. 348 00:20:48,799 --> 00:21:00,000 Yo tengo uno con tarjeta. Entonces yo tengo dos directorios de imágenes, dos directorios de double loads, porque un directorio está en la tarjeta emulada y otro está en la tarjeta de verdad. 349 00:21:01,700 --> 00:21:11,900 Entonces, este de aquí, esta llamada, que devuelve un file corchete, o sea, un array de files, te da todos esos directorios. Si tienes una tarjeta, pues te da dos. 350 00:21:11,900 --> 00:21:26,059 Si no tienes tarjeta, solo te da el de las emuladas. Como estoy sin tarjeta ahora mismo, external files disparados. Aquí está. Solamente me da uno, que está en estoraje, emulate, cero, Android, data, pruebas de codete, download. 351 00:21:26,059 --> 00:21:34,900 haz estos son mis los ficheros de mi aplicación porque este es mi aire son los ficheros de mi 352 00:21:34,900 --> 00:21:42,000 aplicación donde en teoría yo tendría que bajarme los ficheros según lo que opina android y aquí 353 00:21:42,000 --> 00:21:49,299 podría abrirlo cerrarlo y esas cosas los ficheros aquí no sé si he dejado algo más claro o menos 354 00:21:49,299 --> 00:21:55,960 claro que antes ahora mismo vale este directo los que te da este señor de aquí no son para 355 00:21:55,960 --> 00:22:00,880 compartir con otras aplicaciones los que te da este de aquí si son para compartir con otras 356 00:22:00,880 --> 00:22:07,720 aplicaciones sería el referente a la tarjeta sd de la tarjeta sd en la que siempre tiene que estar 357 00:22:07,720 --> 00:22:13,920 y por otro se comparte esto también hay gente que llama también sárez no sé qué si lo miráis 358 00:22:13,920 --> 00:22:20,039 para estoraje barra mula 30 lo hace esto no es particular de mi aplicación aquí es donde la baja 359 00:22:20,039 --> 00:22:26,900 por ejemplo el firefox las cosas entonces pues no es particular para mí esto está compartido 360 00:22:27,859 --> 00:22:35,059 bueno pues porque esto lo junta con ese culite porque me dice dónde están mis bases de datos 361 00:22:35,059 --> 00:22:42,920 y bases de datos están en get data directory están aquí que ahora es un poquito decepcionante porque 362 00:22:42,920 --> 00:22:51,960 pone barra data vamos a buscar en barra data pues voy a ver ya pues vengo aquí busco data 363 00:22:53,779 --> 00:23:01,240 que aquí empezaba a decir y por dónde anda esto está por aquí lo que será en app pues fallaste 364 00:23:01,240 --> 00:23:09,160 no sé si vale no sé por qué pero no lo ponen aquí es en data data y veis aquí tengo suerte 365 00:23:09,160 --> 00:23:15,940 me llamo a gonzález estoy el primero pincho aquí tengo un texto de databases y aquí tengo a ver 366 00:23:15,940 --> 00:23:20,380 porque hay muchas cosas por hecho muchas pruebas la base de datos que acabo de hacer ahora es como 367 00:23:20,380 --> 00:23:28,779 la llame perdón la llame vd pues es esta esta es la base de datos 16 cas esta me la voy a cargar 368 00:23:28,779 --> 00:23:31,359 a la que no me da nadie, me las cargo ya 369 00:23:31,359 --> 00:23:32,900 a esta, fuera 370 00:23:32,900 --> 00:23:35,339 y lo acabo 371 00:23:35,339 --> 00:23:36,859 ¿y la journal qué sería? 372 00:23:37,200 --> 00:23:38,799 esto es un fichero que es 373 00:23:38,799 --> 00:23:40,980 propio de SQL, seguramente si apago 374 00:23:40,980 --> 00:23:42,420 la aplicación se borre 375 00:23:42,420 --> 00:23:44,579 o se quede 376 00:23:44,579 --> 00:23:46,740 el journal es el... ¿se habéis dado 377 00:23:46,740 --> 00:23:48,599 los ficheros del ojo? 378 00:23:49,599 --> 00:23:51,119 sí, o el fichero de bloqueo 379 00:23:51,119 --> 00:23:52,960 pues a lo mejor uno de esos 380 00:23:52,960 --> 00:23:54,339 el que está en uso 381 00:23:54,339 --> 00:23:57,119 no es el que está en uso, el journal es 382 00:23:57,119 --> 00:23:59,660 sin verlo, el concepto de 383 00:23:59,660 --> 00:24:01,519 Journal en base de datos es operaciones 384 00:24:01,519 --> 00:24:03,680 que están pendientes de grabar, que aún no se han grabado 385 00:24:03,680 --> 00:24:04,539 en la base de datos de verdad. 386 00:24:05,819 --> 00:24:07,700 Que se ponen aparte para no molestar 387 00:24:07,700 --> 00:24:09,720 a otros. Y luego ya se... 388 00:24:09,720 --> 00:24:11,460 Es un fichero temporal, pero 389 00:24:11,460 --> 00:24:13,440 permanente. O sea, siempre está aquí 390 00:24:13,440 --> 00:24:15,400 para pegar al otro. Si te das cuenta 391 00:24:15,400 --> 00:24:17,200 tiene cero bytes, pues porque como está todo 392 00:24:17,200 --> 00:24:19,599 no hay pendiente nada, pues está grabado en el otro sitio. 393 00:24:20,500 --> 00:24:21,680 Vale. ¿Cómo sé yo 394 00:24:21,680 --> 00:24:23,339 que esto es una aplicación de... 395 00:24:23,339 --> 00:24:25,400 Es fichero de base de datos. Aparte de porque está en el 396 00:24:25,400 --> 00:24:37,359 directorio, databases y se llama como yo lo he llamado, que ya da pistas, ¿no? Pues me lo puedo bajar, botón derecho, save as y pues lo voy a poner en el escritorio para que moleste. 397 00:24:37,359 --> 00:24:57,180 A ver, home, Álvaro, no, toca abrirlo otra vez. ¿Qué de cosas tengo, por Dios? Pues en el escritorio. Pues aquí dice que ya lo ha grabado, pues lo voy a abrir. 398 00:24:57,180 --> 00:24:59,079 ¿Cómo se abre un fichero de SQLite? 399 00:24:59,440 --> 00:25:00,960 Pues con lo que puedas 400 00:25:00,960 --> 00:25:03,359 Voy a cargarme el ADB Logcat 401 00:25:03,359 --> 00:25:04,859 Y me voy a ir a mi escritorio 402 00:25:04,859 --> 00:25:07,400 Desktop, aquí tengo un montón de cosas 403 00:25:07,400 --> 00:25:08,980 Pero bueno, también tengo el 404 00:25:08,980 --> 00:25:10,380 El DB 405 00:25:10,380 --> 00:25:13,019 Que me acabo de bajar, ¿no? 406 00:25:13,339 --> 00:25:13,819 O BD 407 00:25:13,819 --> 00:25:17,339 BD, aquí lo tengo, me lo acabo de bajar 408 00:25:17,339 --> 00:25:17,819 16K 409 00:25:17,819 --> 00:25:20,759 Además justito, se ve que va por páginas 410 00:25:20,759 --> 00:25:23,039 El SQLite, ¿cómo se puede ver? 411 00:25:23,099 --> 00:25:23,579 Bueno, pues 412 00:25:23,579 --> 00:25:26,559 Yo tengo instalado directamente 413 00:25:26,559 --> 00:25:29,059 en la aplicación SQLite 3 414 00:25:29,059 --> 00:25:30,740 que vale, que es 415 00:25:30,740 --> 00:25:33,099 un cliente de SQLite 416 00:25:33,099 --> 00:25:35,160 que es de línea de comandos 417 00:25:35,160 --> 00:25:35,980 como SQL Plus 418 00:25:35,980 --> 00:25:39,200 o como MySQL Client 419 00:25:39,200 --> 00:25:40,920 pues eso, pues nada 420 00:25:40,920 --> 00:25:42,319 aquí lo tengo, BD 421 00:25:42,319 --> 00:25:44,579 pues, ¿qué tablas hay? 422 00:25:44,960 --> 00:25:46,920 esto a lo mejor, esto es una cosa 423 00:25:46,920 --> 00:25:48,839 particular de SQLite que he buscado esta mañana 424 00:25:48,839 --> 00:25:50,859 punto tablas, pues me dice que hay 425 00:25:50,859 --> 00:25:52,859 estas dos tablas, Android Metadata y 426 00:25:52,859 --> 00:25:54,779 tabla, que tabla es la que yo 427 00:25:54,779 --> 00:25:56,940 he creado, ¿vale? Tabla está 428 00:25:56,940 --> 00:25:58,680 aquí. 429 00:25:59,680 --> 00:26:00,680 Tabla es la que yo he creado. 430 00:26:01,319 --> 00:26:01,759 Pues nada, 431 00:26:02,759 --> 00:26:03,660 ¿cómo se hace ahora? 432 00:26:05,220 --> 00:26:07,000 Columns, esta mañana lo he hecho, ya no me acuerdo. 433 00:26:07,359 --> 00:26:08,380 A ver si estará por aquí. 434 00:26:09,779 --> 00:26:11,059 ¿Estará por aquí? ¡Uh! No está. 435 00:26:11,980 --> 00:26:13,279 Pues esta mañana yo le he preguntado 436 00:26:13,279 --> 00:26:15,099 dime las columnas 437 00:26:15,099 --> 00:26:17,200 que tiene y me se va a decir las columnas que tenía. 438 00:26:19,750 --> 00:26:20,569 Claro que eso ya será 439 00:26:20,569 --> 00:26:22,569 el lenguaje de la propia... 440 00:26:22,569 --> 00:26:24,170 Tabla... 441 00:26:24,170 --> 00:26:26,390 no me acuerdo 442 00:26:26,390 --> 00:26:29,529 había una forma que te decía 443 00:26:29,529 --> 00:26:31,690 mira, esta tabla es así, pero ya no me acuerdo 444 00:26:31,690 --> 00:26:33,210 au cd 445 00:26:33,210 --> 00:26:34,809 changes clone databases 446 00:26:34,809 --> 00:26:37,069 dum echo excelex 447 00:26:37,069 --> 00:26:45,410 schema 448 00:26:45,410 --> 00:26:48,309 es esquema 449 00:26:48,309 --> 00:26:50,529 tabla, pues me dice 450 00:26:50,529 --> 00:26:52,569 que se crea así la tabla 451 00:26:52,569 --> 00:26:54,170 o sea que aquí veo como está hecha la tabla 452 00:26:54,170 --> 00:26:56,049 la tabla es así, pues nada 453 00:26:56,049 --> 00:26:58,069 se le da este disco from tabla 454 00:26:58,069 --> 00:27:00,289 pues aquí están los datos 455 00:27:00,289 --> 00:27:08,680 esto nos demuestra que este es el fichero de base de datos que de ese culite que está haciendo el 456 00:27:08,680 --> 00:27:14,079 android por dentro vale si yo tuviera creo que también yo ahora podría modificarla aquí y subirlo 457 00:27:14,079 --> 00:27:18,700 hacia arriba para ver qué también vamos a ver insert in tu tabla esto no lo hecho nunca vamos 458 00:27:18,700 --> 00:27:27,720 a probar voy a meter el valor 10 con aquí con desde fuera lo voy a llamar y otro valor aquí 459 00:27:27,720 --> 00:27:36,779 que tampoco importa a 10 aparte hay que poner valores así esto creo que se cuele a ver pues 460 00:27:36,779 --> 00:27:44,420 nada aquí habrá que hacer comita vale no hay comidas seres hasta isco from tabla pues ya 461 00:27:44,420 --> 00:27:52,980 está pues exit exit control c control de vale a ver si lo grabado porque no controlo yo esto 462 00:27:52,980 --> 00:28:01,859 select a stage cofront tabla pues aquí está pues creo que ahora puedo subirlo aquí arriba a ver 463 00:28:01,859 --> 00:28:07,559 qué tal vamos a ver si lo consigo subir primero voy a apagar la aplicación porque es como está 464 00:28:07,559 --> 00:28:13,420 en uso y tal por lo normal es que si le cambio los ficheros pues se rompa algo a ver como lo 465 00:28:13,420 --> 00:28:22,839 mato hay por dios aquí a la spa ya la he matado voy a matar voy a borrar me esto me está preguntando 466 00:28:22,839 --> 00:28:46,859 Sí, delete. Me lo he cargado y ahora me imagino que lo podré subir. Me imagino, a ver, porque si no, ¿para qué quieren? A ver, entonces, en el desktop, esta BD, a ver si la puedo descargar. Uy, que desagradable, ¿no? Bueno, aquí tengo un Upload. Pues nada, en el desktop hemos creado que había un BD. 467 00:28:46,859 --> 00:28:56,690 no es que sea una raza de soltar pero se puede casi lo prefiero así falló menos voy a arrancar 468 00:28:56,690 --> 00:29:04,650 la aplicación a ver qué pasa vengo aquí prueba de permisos y entonces voy a poner esto aquí al 469 00:29:04,650 --> 00:29:09,450 lado y al mismo tiempo voy a poner el logcat para que nos dé pistas de qué está pasando 470 00:29:11,009 --> 00:29:15,930 aquí está todo esto lo de antes si ves la fecha si ves la hora es lo eso fue hace un rato ya 471 00:29:15,930 --> 00:29:33,809 Entonces, voy a darle aquí a ejecutar ese culite, a ver qué se le ocurre. Bueno, pues como veis ha vuelto a fallar porque tiene todos los datos de antes, pero fijaos, este lo he metido desde fuera, no lo he metido con la propia aplicación. 472 00:29:33,809 --> 00:29:54,019 O sea, que puedo meter y sacar los datos que yo quiera con ese culite. Tomía no lo ha dicho nunca, se puede. Qué suerte. Vale, pues creo que con esto acabo de contar lo que quería contar de ese culite, que es por lo que me has preguntado más o menos. 473 00:29:54,019 --> 00:29:57,019 No sé si te ha quedado alguna zona todavía oscura o... 474 00:29:57,019 --> 00:29:57,920 No, por ahora no. 475 00:29:58,380 --> 00:29:58,660 Vale. 476 00:29:59,740 --> 00:30:00,319 Bueno, pues... 477 00:30:00,319 --> 00:30:04,319 Si nos metemos en meollo de tema de... 478 00:30:06,079 --> 00:30:07,799 ¿Cómo sería? 479 00:30:10,019 --> 00:30:13,319 Programación orientada a objetos, sobre base de datos y toda la historia, 480 00:30:13,440 --> 00:30:14,000 eso ya... 481 00:30:14,000 --> 00:30:15,900 Bueno, eso ya sería... 482 00:30:15,900 --> 00:30:16,839 Eso ya es más complejo. 483 00:30:16,980 --> 00:30:17,720 Eso es acceso a datos. 484 00:30:18,819 --> 00:30:20,400 Eso justamente es acceso a datos. 485 00:30:20,660 --> 00:30:23,819 Aquí se podía poner un ORM que funcionase encima de ese culite. 486 00:30:24,019 --> 00:30:26,200 hombre, le quita un poco la gracia porque se eligió 487 00:30:26,200 --> 00:30:28,119 SQLite porque era ligerito y facilito 488 00:30:28,119 --> 00:30:30,559 para los teléfonos 489 00:30:30,559 --> 00:30:31,839 que están siempre limitados 490 00:30:31,839 --> 00:30:34,539 si le metes ahí un montón de cosas pues 491 00:30:34,539 --> 00:30:37,819 no es lo que tenía pensado 492 00:30:37,819 --> 00:30:38,700 que lo hice 493 00:30:38,700 --> 00:30:42,099 y luego sé que hay aplicaciones 494 00:30:42,099 --> 00:30:44,559 que tienen su base de datos en SQLite 495 00:30:44,559 --> 00:30:46,279 o utilizan 496 00:30:46,279 --> 00:30:48,279 ficheros, ¿vale? por ejemplo 497 00:30:48,279 --> 00:30:50,220 y luego esa información la 498 00:30:50,220 --> 00:30:52,119 sincronizan con un servidor de base de datos 499 00:30:52,119 --> 00:30:53,220 que puede ser 500 00:30:53,220 --> 00:30:55,420 un oracle o 501 00:30:55,420 --> 00:30:57,539 alguna silla más grande en el cual ya se 502 00:30:57,539 --> 00:30:59,500 hace persistente 503 00:30:59,500 --> 00:31:00,240 esa información. 504 00:31:01,980 --> 00:31:02,420 ¿Eso? 505 00:31:03,799 --> 00:31:05,460 Pues con mucho trabajo, porque 506 00:31:05,460 --> 00:31:06,900 que yo sepa, no hay ninguna 507 00:31:06,900 --> 00:31:09,039 librería que te lo haga, 508 00:31:09,440 --> 00:31:11,640 que yo sepa. Lo que hay es que directamente 509 00:31:11,640 --> 00:31:13,299 si no usas 510 00:31:13,299 --> 00:31:15,440 SQLite, a lo mejor usas SQLite 511 00:31:15,440 --> 00:31:17,380 por debajo, pero lo que son servicios 512 00:31:17,380 --> 00:31:19,380 completos. O sea, en vez de haber un oracle 513 00:31:19,380 --> 00:31:21,339 por ahí en internet, te venden 514 00:31:21,339 --> 00:31:23,079 bases de datos con 515 00:31:23,079 --> 00:31:25,039 librerías 516 00:31:25,039 --> 00:31:27,500 que tú accedes directamente 517 00:31:27,500 --> 00:31:29,380 a esa base de datos siempre 518 00:31:29,380 --> 00:31:31,799 por red, evidentemente 519 00:31:31,799 --> 00:31:33,339 pagando dinero, ¿vale? 520 00:31:33,539 --> 00:31:35,599 El desarrollador paga dinero y tiene ahí 521 00:31:35,599 --> 00:31:37,599 una clave 522 00:31:37,599 --> 00:31:39,059 y tal y cual que le metes en la aplicación 523 00:31:39,059 --> 00:31:41,680 y que si la librería 524 00:31:41,680 --> 00:31:43,740 es efectivamente lista, cuando no hay conexión 525 00:31:43,740 --> 00:31:45,619 lo escribe en local hasta que 526 00:31:45,619 --> 00:31:47,079 luego cuando hay conexión se sincroniza. 527 00:31:47,599 --> 00:31:50,059 Pero no es con un oracle o no es 528 00:31:50,059 --> 00:31:51,000 un SQL, es 529 00:31:51,000 --> 00:32:19,500 Esa base de datos particular con su forma particular de trabajar. ¿Cuál conozco yo? Pues Firebird. Firebird es justamente eso. A ver, no, Firebase. No, es que es Firebase, perdón. Es Firebase que la compró Google porque había mucha gente que la utilizaba para Android. 530 00:32:19,500 --> 00:32:22,960 Pues esto es más o menos lo que tú me has contado 531 00:32:22,960 --> 00:32:24,339 Pero claro, es no SQL 532 00:32:24,339 --> 00:32:26,759 O sea, empieza a decirte que es no SQL 533 00:32:26,759 --> 00:32:28,900 Son asedatos, que se guarda 534 00:32:28,900 --> 00:32:31,099 Gasol, lo que tú quieras, que cuando no hay 535 00:32:31,099 --> 00:32:32,319 Conexión 536 00:32:32,319 --> 00:32:34,900 Se sincroniza después 537 00:32:34,900 --> 00:32:35,640 Cuando la tiene 538 00:32:35,640 --> 00:32:38,759 Pero no es Oracle 539 00:32:38,759 --> 00:32:40,599 No es SQLite, no es MySQL 540 00:32:40,599 --> 00:32:42,539 Es esto, y se paga 541 00:32:42,539 --> 00:32:44,240 Tiene una parte gratis, pero luego se paga 542 00:32:44,240 --> 00:32:46,759 Y hay alternativas, pero vamos, ya buscando por aquí 543 00:32:46,759 --> 00:32:48,440 Alternativas a fin de base 544 00:32:48,440 --> 00:32:49,500 y ya lo que te diga internet. 545 00:32:50,880 --> 00:32:51,079 Vale. 546 00:32:55,880 --> 00:32:56,240 ¿Dudas? 547 00:32:56,420 --> 00:32:56,740 Resulta. 548 00:32:57,359 --> 00:32:57,940 Pues arreglado. 549 00:32:59,740 --> 00:33:00,859 Uy, si somos más gente ya. 550 00:33:05,150 --> 00:33:05,849 ¿Alguna cosa? 551 00:33:06,349 --> 00:33:07,630 Claro, de ficheros no cuento nada. 552 00:33:07,769 --> 00:33:08,009 ¿Por qué? 553 00:33:08,170 --> 00:33:10,390 Porque de ficheros no hay que contar nada. 554 00:33:10,630 --> 00:33:11,250 Es de primero. 555 00:33:12,190 --> 00:33:13,190 No es que sea despectivo. 556 00:33:13,289 --> 00:33:13,930 Es que es de primero. 557 00:33:14,130 --> 00:33:15,549 Una vez que ya tienes el file, 558 00:33:15,690 --> 00:33:17,250 pues tú ya te puedes hacer tu file output string, 559 00:33:17,349 --> 00:33:18,069 que creo que funciona. 560 00:33:18,069 --> 00:33:37,789 Y si no, pues con los métodos que vienen por ahí en la documentación para hacer ficheros, pues te dan un input o un output stream que tú puedes convertir a tu reader para poder leer caracteres o a tu writer para poder escribir caracteres, como se contó en primero o se debería haber contado en primero. 561 00:33:37,789 --> 00:33:47,970 imagino que sólo tenéis qué vale pues por eso no es que sabéis que el problema es saber en qué 562 00:33:47,970 --> 00:33:52,109 directo después escribir pero como directo después escribir son los que han salido antes cuando de 563 00:33:52,109 --> 00:33:59,529 afichar estos son los directores se pueden escribir pues arreglado no y bueno y en punto 564 00:33:59,529 --> 00:34:05,170 barra también que se guarda al final donde hemos visto si escribes en punto barra pues acabas 565 00:34:05,170 --> 00:34:13,050 estando yo diría aquí un fichero en punto barra está ahí en ese directorio 566 00:34:14,610 --> 00:34:24,590 y lo de prueba ficheros pues voy a hacer un fichero vamos a ver si se podrá con directamente 567 00:34:24,590 --> 00:34:26,110 con file output stream, vamos a ver 568 00:34:26,110 --> 00:34:28,369 new file 569 00:34:28,369 --> 00:34:30,090 output stream 570 00:34:30,090 --> 00:34:33,090 punto barra 571 00:34:33,090 --> 00:34:36,400 hola 572 00:34:36,400 --> 00:34:38,420 no, a ver, igual me hace falta 573 00:34:38,420 --> 00:34:39,300 importar algo 574 00:34:39,300 --> 00:34:44,719 ah, que tengo que 575 00:34:44,719 --> 00:34:46,079 hacer un try catch, claro 576 00:34:46,079 --> 00:34:48,059 pues try 577 00:34:48,059 --> 00:34:52,289 catch 578 00:34:52,289 --> 00:34:55,409 en la vida real no pongáis 579 00:34:55,409 --> 00:34:57,530 probable, habría que poner la 580 00:34:57,530 --> 00:34:59,510 sección que es, pero es que así lo pillo 581 00:34:59,510 --> 00:35:01,309 todo y no se me escapa nada en las pruebas 582 00:35:01,309 --> 00:35:57,300 vale, pues nada, no puedo hacer el fichero, y esto pues me lo voy a hacer aquí, una línea menos, le doy a ejecutar otra vez, y ahora probamos a ver que tal, vale, voy a probar con ficheros, no sé si se ha roto algo, vamos a mirar, aquí pone no puedo hacer el fichero, uh, que mal rollo, no, no lo ha hecho, pues mira, no funciona, yo me imaginé que funcionaría, porque a veces funcionan estas cosas, pero no funciona, 583 00:35:57,300 --> 00:36:19,039 Pues habrá que hacerlo con lo que nos obligan, con el contexto. Pues nada, dis.create, no, ¿cómo era? ¿Era open? Si os acordáis, si no, tendré que buscarlo. Pues lo tengo que buscar. Pues buscamos. A ver, ¿cómo hacías? 584 00:36:19,039 --> 00:36:30,219 Es un almacenamiento externo, almacenamiento interno, OpenFileOutput. 585 00:36:30,219 --> 00:36:32,059 No me acordaba. 586 00:36:32,900 --> 00:36:36,679 Si lo tenía aquí ya, ¿cómo se...? 587 00:36:36,679 --> 00:36:45,340 Si le digo a dar a control espacio, OpenFileOutput, pues nada, el fichero que queríamos llamar fichero. 588 00:36:46,380 --> 00:36:49,239 Y luego este de aquí que hay que poner, IntMode. 589 00:36:49,760 --> 00:36:51,860 Pues a ver qué me dice este señor. 590 00:36:51,860 --> 00:36:54,159 con texto de private vale 591 00:37:02,320 --> 00:37:10,500 vale multiproces vale pues lo voy a hacer con apenas para ir añadiendo si 592 00:37:10,500 --> 00:37:14,219 hiciera falta solamente con esto se tiene que crear ya no me lo voy a guardar siquiera 593 00:37:15,320 --> 00:37:19,559 debería crearse con esto de nuevas 594 00:37:19,559 --> 00:37:46,360 sacó la consola para cuando éste tenía que decirle que que si ponga ficheros 595 00:37:47,880 --> 00:37:52,320 ahora nos ha quejado de nada eso quiere decir que ha funcionado he creado un fichero por lo 596 00:37:52,320 --> 00:37:57,960 voy a mirar vengo aquí a files y le digo generalmente la gente lo llama refrescar 597 00:37:57,960 --> 00:38:04,260 aquí ya más sincronizar pues aquí tengo mi fichero de 0 bytes que acabo de crear este 598 00:38:04,260 --> 00:38:12,880 señor me devuelve un output string vamos a ver control b este señor como veis me da directamente 599 00:38:12,880 --> 00:38:16,860 un file output stream y si queda un stream pues nada y con el file output stream pues ya hacemos 600 00:38:16,860 --> 00:38:23,440 lo que queramos hacer que hacíamos en el primero lo normal pues si es binario dejarlo ya como está 601 00:38:23,440 --> 00:38:31,360 y escribir bytes o si es de texto pues hacer sobre esto un writer y escribir cosas con el writer 602 00:38:31,360 --> 00:38:34,679 como antes 603 00:38:34,679 --> 00:38:36,880 como con las bases de datos 604 00:38:36,880 --> 00:38:38,019 una vez generadas las bases de datos 605 00:38:38,019 --> 00:38:40,739 pues ya cambiamos de módulo y ya no lo cuento yo 606 00:38:40,739 --> 00:38:42,519 ya lo cuenta el siguiente 607 00:38:42,519 --> 00:38:48,860 imagino que me dejarán hacer directorios 608 00:38:48,860 --> 00:38:49,500 ya que estoy 609 00:38:49,500 --> 00:38:53,219 ¿puedo hacer directorios? 610 00:38:54,579 --> 00:38:56,579 si no recuerdo más creo que si te permitía 611 00:38:56,579 --> 00:38:58,000 vamos a ver 612 00:38:58,000 --> 00:39:00,760 voy a probar a hacer directorios 613 00:39:04,960 --> 00:39:06,099 acá me va a preguntar 614 00:39:06,099 --> 00:39:25,460 ahora sí sí sí sí no me preguntes más ficheros pues no hay que hacer el directorio antes o no 615 00:39:25,460 --> 00:39:30,920 se puede hacer directorios no ha funcionado directamente no tienes que crear primero el 616 00:39:30,920 --> 00:39:43,199 fichero o sea el director pues no lo veo claro era con otro comando estoy mirando a ver si lo 617 00:39:43,199 --> 00:40:00,380 encuentro pues pues yo diría que no se puede hacer directorios así a bote pronto porque no 618 00:40:00,380 --> 00:40:08,880 vamos a haberlo leído a mira que es fiel es decir que decir de decirle a crear un directorio get 619 00:40:11,159 --> 00:40:17,840 get yo la verdad es que si quiero crear un directorio lo llamado 620 00:40:17,840 --> 00:40:20,039 créate, no lo había llamado get 621 00:40:20,039 --> 00:40:20,739 pero oye, mira 622 00:40:20,739 --> 00:40:23,260 que se le va a hacer 623 00:40:23,260 --> 00:40:25,699 que se le va a hacer, pues ahí está 624 00:40:25,699 --> 00:40:27,679 get dir name, pues sería 625 00:40:27,679 --> 00:40:28,940 el dir 626 00:40:28,940 --> 00:40:31,199 o con barra delante 627 00:40:31,199 --> 00:40:33,860 claro, a lo mejor es que lo he hecho mal porque he puesto 628 00:40:33,860 --> 00:40:34,519 una barra delante 629 00:40:34,519 --> 00:40:37,800 bueno, pues nada, dir y aquí hay que poner 630 00:40:37,800 --> 00:40:39,960 un mode, que el mode cual es 631 00:40:39,960 --> 00:40:41,199 control B 632 00:40:41,199 --> 00:40:44,969 que misterioso 633 00:40:44,969 --> 00:40:45,670 mode 634 00:40:45,670 --> 00:40:50,559 es un file mode 635 00:40:50,559 --> 00:40:52,760 y el file mode es 636 00:40:52,760 --> 00:40:54,639 no me dicen que es 637 00:40:54,639 --> 00:40:55,619 un file mode 638 00:40:55,619 --> 00:41:07,440 pues ahora está bien que me dijeran que es un file mode, ¿verdad? 639 00:41:08,699 --> 00:41:09,519 control B 640 00:41:09,519 --> 00:41:13,840 vale, pues aquí están los file modes 641 00:41:13,840 --> 00:41:14,800 los de antes 642 00:41:14,800 --> 00:41:16,920 mode private, mode no sé qué, pues 643 00:41:16,920 --> 00:41:20,630 pues 644 00:41:20,630 --> 00:41:23,170 private 645 00:41:23,170 --> 00:41:35,320 este mismo 646 00:41:35,320 --> 00:41:37,059 a lo mejor cero también varía 647 00:41:37,059 --> 00:41:39,900 bueno, pues digo yo que ahora funcionará 648 00:41:39,900 --> 00:41:48,489 Voy a decirle que no me pregunte más 649 00:41:48,489 --> 00:41:50,090 Para que no me pregunte más 650 00:41:50,090 --> 00:42:01,320 ¿Picheros? 651 00:42:03,849 --> 00:42:05,369 Pues dice que no se puede hacer de pichero 652 00:42:05,369 --> 00:42:08,610 Y me estoy quedando sin pilas 653 00:42:08,610 --> 00:42:14,489 Voy a enchufar primero el portátil 654 00:42:14,489 --> 00:42:16,210 Y luego miro a ver qué ha pasado 655 00:42:16,210 --> 00:42:19,199 Vamos a ver 656 00:42:19,199 --> 00:42:32,610 Pues enchufado ya está 657 00:42:32,610 --> 00:42:34,750 Y ahora 658 00:42:34,750 --> 00:42:36,389 No, este no es 659 00:42:36,389 --> 00:42:38,250 Este que me he quedado sin brillo 660 00:42:38,250 --> 00:43:08,260 Y ahora, pues voy a ver si me ha hecho el directorio o qué ha hecho. Vamos a ver, sincronizar. Pues no, ha hecho el dir. Lo que me extraña... Ah, bueno, es que soy un poco... A ver, tenía que haber puesto la excepción para saber dónde ha fallado. 661 00:43:08,260 --> 00:43:40,219 eso ya habéis visto, parece que no puedo hacer el fichero 662 00:43:40,219 --> 00:43:41,500 porque tiene un separador 663 00:43:41,500 --> 00:43:44,900 bueno, pues nada, var 664 00:43:44,900 --> 00:43:46,860 el directorio 665 00:43:46,860 --> 00:43:49,000 dir punto 666 00:43:49,000 --> 00:43:51,820 y ahora, ¿cómo creo yo aquí un fichero? 667 00:43:52,119 --> 00:43:52,760 a partir de aquí 668 00:43:52,760 --> 00:44:08,179 porque esto es un file, ¿cómo lo hago? 669 00:44:15,219 --> 00:44:16,219 file output 670 00:44:16,219 --> 00:44:20,829 claro, ¿para qué me vale 671 00:44:20,829 --> 00:44:25,380 para qué me 672 00:44:25,380 --> 00:44:27,380 vale el directorio 673 00:44:27,380 --> 00:44:29,980 si no puedo hacer 674 00:44:29,980 --> 00:44:30,739 un fichero ahí dentro? 675 00:44:30,739 --> 00:45:21,550 Vale, ya has hecho el file. Tendrías que hacer un file poniendo getExternalStorageDirectory y luego le tienes que decir el nombre del directory. Luego al file le pasas mkdir. 676 00:45:25,719 --> 00:45:33,179 Sí, sí, no. Si lo veo más o menos claro. Lo que no veo es luego cómo abro un fichero ahí dentro. 677 00:45:33,179 --> 00:45:55,500 Si yo me hago ahora un file, un new file, que le pongo como padre este dir y le pongo autonómico, por ejemplo, subdir, no sé si te refieres a algo así, y le digo mk, a ver, que file no lo he importado, perdón, import class. 678 00:45:55,500 --> 00:45:56,960 y le digo 679 00:45:56,960 --> 00:45:59,559 mkdeals 680 00:45:59,559 --> 00:46:02,059 así creo los directorios 681 00:46:02,059 --> 00:46:03,500 sí, sí, seguramente 682 00:46:03,500 --> 00:46:04,760 esto funciona 683 00:46:04,760 --> 00:46:08,019 y luego para hacer el open file output 684 00:46:08,019 --> 00:46:09,639 que sería para crear el fichero 685 00:46:09,639 --> 00:46:11,800 seguramente tendrías que poner en el nombre 686 00:46:11,800 --> 00:46:13,900 punto 687 00:46:13,900 --> 00:46:15,019 barra dir 688 00:46:15,019 --> 00:46:16,440 barra fichero 689 00:46:16,440 --> 00:46:19,860 pues voy a probar 690 00:46:19,860 --> 00:46:21,579 voy a probar, pero no creo que funcione 691 00:46:21,579 --> 00:46:23,380 a ver, launch, pues otra vez 692 00:46:23,380 --> 00:46:28,599 Porque lo que me ha dicho es que había un nombre que no se podía poner a un fichero porque era un separador de directorio. 693 00:46:28,739 --> 00:46:31,699 Entonces, me extraña. 694 00:46:32,539 --> 00:46:36,940 Que acceda dentro del directorio de alguna manera y que lo genera ahí. 695 00:46:36,940 --> 00:46:44,940 Claro, lo que tengo la impresión es que a lo mejor lo que tengo que hacer es un file output stream directamente dentro del... 696 00:46:45,519 --> 00:46:47,179 A ver, este, vamos a ver. 697 00:46:47,960 --> 00:46:49,320 var subdir. 698 00:46:49,320 --> 00:47:11,300 entonces un file.stream que lo hago en el new file, subdir y así lo llamo fichero, y aquí tengo que poner new, no sé por qué esto no me gusta, ¿por qué no te gusta? 699 00:47:11,300 --> 00:47:28,579 Ah, espérate, claro, sí, es que aquí he puesto mkdir. Subir mkdir. Entonces, ahora esto ya debería ir mejor y yo creo que a ver si hay suerte y esto sí que funciona. 700 00:47:29,019 --> 00:47:41,519 O sea, volver al file potenciando toda la vida en vez de este, que simplemente lo que hace es llevarte hasta el sitio. Esperemos que sea así, porque si no, no sabría ahora mismo cómo hacer subdirectorios. 701 00:47:41,519 --> 00:47:45,519 Bueno, algo ha cascado 702 00:47:45,519 --> 00:47:46,860 Pero ya veremos el qué 703 00:47:46,860 --> 00:47:50,619 Ha cascado en la 202 704 00:47:50,619 --> 00:47:52,380 Que la 202 es aquí 705 00:47:52,380 --> 00:47:54,219 Ha cascado esta 706 00:47:54,219 --> 00:47:55,380 Pero la anterior ha funcionado 707 00:47:55,380 --> 00:47:57,300 O sea que es que al final 708 00:47:57,300 --> 00:47:59,219 Cuando tienes el file ya utilizas 709 00:47:59,219 --> 00:48:00,940 Lo normal de Java 710 00:48:00,940 --> 00:48:03,119 Vamos a ver, sincronizar 711 00:48:03,119 --> 00:48:06,360 Sincronizar 712 00:48:06,360 --> 00:48:10,800 No he visto yo que aparezca ese directorio 713 00:48:10,800 --> 00:48:13,739 Sincronice 714 00:48:13,739 --> 00:48:15,380 Bueno 715 00:48:15,380 --> 00:48:17,179 Pues a cascar la 202 716 00:48:17,179 --> 00:48:20,079 El casco es 717 00:48:20,079 --> 00:48:22,320 En mi línea 718 00:48:22,320 --> 00:48:23,739 En la 202 719 00:48:23,739 --> 00:48:26,179 Lo que quiere decir que ha pasado 720 00:48:26,179 --> 00:48:28,559 Por las anteriores, o sea que esto lo ha hecho 721 00:48:28,559 --> 00:48:30,519 ¿Y si 722 00:48:30,519 --> 00:48:32,260 Te está dando error porque 723 00:48:32,260 --> 00:48:34,300 Espera alguna especie de array 724 00:48:34,300 --> 00:48:36,159 Con el mkdir 725 00:48:36,159 --> 00:48:38,340 Y que sea mkdir sin la s del final? 726 00:48:38,699 --> 00:48:40,300 No, mkdir es hacer el último 727 00:48:40,300 --> 00:48:42,539 Directorio y mkdir es hacer todos los directorios 728 00:48:42,539 --> 00:48:44,280 Ah, vale, vale 729 00:48:44,280 --> 00:48:46,639 Es como mkdir en la línea de comando 730 00:48:46,639 --> 00:48:47,519 Y mkdir menos p 731 00:48:47,519 --> 00:48:50,579 ¿Vale? Pues la verdad es que esto 732 00:48:50,579 --> 00:48:52,380 Es un poco un misterio porque 733 00:48:52,380 --> 00:48:59,650 No ha hecho 734 00:48:59,650 --> 00:49:00,869 O sea, esto no lo ha hecho 735 00:49:00,869 --> 00:49:03,150 O sea, ha pasado por aquí 736 00:49:03,150 --> 00:49:04,389 No ha fallado 737 00:49:04,389 --> 00:49:07,110 Y luego ha pasado por aquí 738 00:49:07,110 --> 00:49:08,469 No ha fallado 739 00:49:08,469 --> 00:49:11,650 Y ya falla aquí abajo 740 00:49:11,650 --> 00:49:13,610 Es algo sorprendente 741 00:49:13,610 --> 00:49:16,090 Me ha parecido ver que te ha aparecido 742 00:49:16,090 --> 00:49:17,789 una carpeta llamada appdir 743 00:49:17,789 --> 00:49:21,670 no sé si la has creado tú ahora 744 00:49:21,670 --> 00:49:23,369 Dios mío, pues sí, aquí está 745 00:49:23,369 --> 00:49:25,730 O sea, te crea 746 00:49:25,730 --> 00:49:27,650 una carpeta por cada aplicación 747 00:49:27,650 --> 00:49:31,789 o como diciendo, vale, esta aplicación 748 00:49:31,789 --> 00:49:33,769 necesita una carpeta, pues se la meto en otro sitio 749 00:49:33,769 --> 00:49:35,590 completamente diferente a todo lo anterior 750 00:49:35,590 --> 00:49:36,150 y ya está 751 00:49:36,150 --> 00:49:39,789 Esto es, el concepto 752 00:49:39,789 --> 00:49:41,449 de esto, la verdad es que a mí no me sorprende 753 00:49:41,449 --> 00:49:43,570 porque yo he pasado ya por algunos sitios, como por ejemplo 754 00:49:43,570 --> 00:49:46,980 había hace muchísimo tiempo, antes de las 755 00:49:46,980 --> 00:49:48,940 berries, pues también tenían 756 00:49:48,940 --> 00:49:50,960 el concepto de almacenamiento 757 00:49:50,960 --> 00:49:53,659 llevado por el sistema operativo 758 00:49:53,659 --> 00:49:55,579 y no por ti. Había ficheros 759 00:49:55,579 --> 00:49:57,579 y directorios, por supuesto, pero te dejaban 760 00:49:57,579 --> 00:49:59,300 escribir solamente donde se podía escribir 761 00:49:59,300 --> 00:50:00,659 según ellos y no en ningún otro sitio. 762 00:50:01,519 --> 00:50:02,440 Algo parecido le pasa 763 00:50:02,440 --> 00:50:05,239 muy similar a las aplicaciones 764 00:50:05,239 --> 00:50:06,539 de Mac si no hacen cosas raras. 765 00:50:07,760 --> 00:50:09,739 Entonces, pues no me sorprende 766 00:50:09,739 --> 00:50:11,159 que tú le digas que quieres hacer un fichero 767 00:50:11,159 --> 00:50:12,739 y ahí viene el directorio porque se acabó 768 00:50:12,739 --> 00:50:15,460 y que le digas que quieres hacer un directorio y yo pago donde él quiera. 769 00:50:15,840 --> 00:50:16,840 No me sorprende nada. 770 00:50:18,940 --> 00:50:31,619 Me sorprende dónde lo ha puesto, pero no que lo ponga donde él quiera. No me parece normal todo. No sé si me explico. 771 00:50:33,280 --> 00:50:41,760 Bueno, pues ahí está. Hombre, la gente en general no suele dedicarse a hacer muchos ficheros de estos. Me explico. 772 00:50:42,739 --> 00:50:56,500 Si tu aplicación lo que tiene son datos que quiere guardar y tal, lo normal es que lo guardes en una base de datos que está estructurado y es más fácil. Si tu aplicación tiene datos que tiene que compartir con los demás, pues lo pone en el directorio compartido, que ahí sí te dejan hacer los ficheros que tú quieras, donde tú quieras. 773 00:50:56,500 --> 00:51:00,420 que tu aplicación tenga ficheros sueltos 774 00:51:00,420 --> 00:51:02,039 escondidos que nadie ve 775 00:51:02,039 --> 00:51:04,360 pues a lo mejor te ocurre 776 00:51:04,360 --> 00:51:04,739 si 777 00:51:04,739 --> 00:51:07,880 eres, como se dice esto 778 00:51:07,880 --> 00:51:10,260 es una aplicación que ya era de escritorio 779 00:51:10,260 --> 00:51:11,539 y ahora están pasando a Java 780 00:51:11,539 --> 00:51:13,039 o a Android o algo así 781 00:51:13,039 --> 00:51:16,260 pero una aplicación nueva, lo normal es que no use ficheros 782 00:51:17,059 --> 00:51:18,619 así que 783 00:51:18,619 --> 00:51:21,900 que no use ficheros 784 00:51:21,900 --> 00:51:23,920 digamos internos privados propios 785 00:51:23,920 --> 00:51:24,860 en este directorio 786 00:51:24,860 --> 00:51:36,260 Es lo normal, porque tienes alternativas mejores. Tienes la base de datos ya bien hecha y luego, en general, todas las aplicaciones, como quieren guardarlo o algo en Internet, pues lo guardan en Internet. 787 00:51:38,380 --> 00:51:50,880 Entonces, esto no suele ser... Yo creo que no se usa. Y luego, si tienes recursos de aplicación, como yo que sé, si quieres poner iconos o quieres poner texto, ya sabéis que va en la carpeta de REST, en el RAW o donde sea, y tampoco va aquí. 788 00:51:50,880 --> 00:51:59,460 entonces pues no suele haber mucho fichero de estos no suele a todo esto ahora que estamos 789 00:51:59,460 --> 00:52:04,320 estoy diciendo que no suele pero dónde están los ficheros de una aplicación que yo tengo que se 790 00:52:04,320 --> 00:52:13,929 llama termos ahora debe estar dando a mí la duda que no sé cómo se llama con termos con termos a 791 00:52:13,929 --> 00:52:26,909 ver cómo lo hacen no puedo verlos no puedo verlos porque no tengo la prueba 792 00:52:26,909 --> 00:52:33,360 gustaría verlos no tengo no tengo permisos por lo que sea para ver los directorios pues nada 793 00:52:37,500 --> 00:52:41,380 se lo voy a preguntar a la propia aplicación porque es que es una aplicación que sí que 794 00:52:41,380 --> 00:52:47,099 usa ficheros bastantes porque es un emulador de linux digamos entonces su vida son los ficheros 795 00:52:47,099 --> 00:52:55,719 de data data con termos pues no me han dejado verlo y aquí sí que hacen directorios lo veis 796 00:52:55,719 --> 00:53:05,619 pues es que me sonaba a mí files home aquí si los tienen data data pero es data es que me ha dado 797 00:53:05,619 --> 00:53:23,980 a talata mt con termos ya llegaré tras pasar termos para no no me dejan mirar porque no estoy 798 00:53:23,980 --> 00:53:30,679 jugando lo no me dejan mirar ahí bueno lo que tengo que mirar tiene sentido así no puedo 799 00:53:30,679 --> 00:53:37,880 darle datos a whatsapp por ejemplo tiene sentido vale pues se ve que se puede de alguna forma que 800 00:53:37,880 --> 00:53:42,920 yo no sé cómo es pero se ve que se puede no me interesa porque alternativas mejores para 801 00:53:42,920 --> 00:54:01,369 hacer aplicaciones a lo mejor directamente pero posiblemente si hago simplemente un directorio en él 802 00:54:01,369 --> 00:54:14,219 y le a ver data data cuál era data data 803 00:54:20,039 --> 00:54:24,659 dale prueba ese culite 804 00:54:26,699 --> 00:54:45,250 y les subir posiblemente ya hago esto sin más sí que funciona pasa que esto ya se repite 805 00:54:45,250 --> 00:55:06,570 Entonces, pues no le pongo aquí var y ya está. Vamos a ver. He fallado. ¿Qué he hecho mal? 806 00:55:17,989 --> 00:55:19,449 No has puesto nombre de la variable. 807 00:55:20,010 --> 00:55:49,920 Exactamente. Pues una sin usar y a ver qué pasa ahora. Ficheros, falla en la línea 206, que la 206 es esta, pero esta otra ha funcionado, así que imagino que habré hecho el directorio donde yo quería. 808 00:55:54,659 --> 00:55:55,519 Pues así se hace un directorio. 809 00:55:55,679 --> 00:55:55,940 Ya está. 810 00:55:56,179 --> 00:55:58,420 Te sabes el sitio y lo escribes. 811 00:55:58,860 --> 00:55:59,440 Ya se puede hacer. 812 00:56:00,880 --> 00:56:01,760 Qué desagradable. 813 00:56:02,960 --> 00:56:04,360 Alguna forma mejor habrá, imagino. 814 00:56:05,380 --> 00:56:05,739 Seguro. 815 00:56:06,119 --> 00:56:06,980 Hombre, a ver, ¿qué ocurre? 816 00:56:06,980 --> 00:56:13,500 Este data te lo da esta llamada al sistema. 817 00:56:13,900 --> 00:56:15,860 Este otro data, pues te lo puedes saber. 818 00:56:16,159 --> 00:56:18,820 Este es mi ID, que lo puedo sacar del context. 819 00:56:19,440 --> 00:56:22,019 Este files también es una cosa fija. 820 00:56:22,019 --> 00:56:28,719 Así que, aunque es desagradable, tampoco es tan falto de sentido. 821 00:56:31,719 --> 00:56:36,019 Bueno, pues ya está. Suficiente por files, si no me preguntáis más cosas. 822 00:56:36,280 --> 00:56:37,500 ¿Las aves preferencias las lleváis bien? 823 00:56:40,699 --> 00:56:41,880 Que al final... 824 00:56:43,059 --> 00:56:48,159 Bueno, ya las miramos en su momento cuando miramos los vídeos. 825 00:56:48,659 --> 00:56:49,260 ¿Os acordáis? 826 00:56:50,260 --> 00:56:50,480 Sí. 827 00:56:50,480 --> 00:56:58,380 Pues las áreas preferencias es la forma que tiene Android de darnos algo rapidito 828 00:56:58,380 --> 00:57:05,019 Bueno, una de las cosas que nos da para hacer algo rapidito, que corra mucho y que se pueda llevar en casi todas partes 829 00:57:05,019 --> 00:57:13,639 Por ejemplo, en el OnCreate están preparadas las áreas preferencias para cuando te apagas y te enciendes 830 00:57:13,639 --> 00:57:14,679 A ver, me explico 831 00:57:14,679 --> 00:57:20,099 Todo Android está orientado alrededor de que las aplicaciones se pueden matar en cualquier momento 832 00:57:20,099 --> 00:57:23,059 el proceso te lo pueden matar 833 00:57:23,059 --> 00:57:25,239 entonces está pensado teóricamente 834 00:57:25,239 --> 00:57:27,280 para que en cualquier momento cuando te llamen 835 00:57:27,280 --> 00:57:29,300 tú rápidamente puedas aparentar 836 00:57:29,300 --> 00:57:30,280 que ni siquiera te han matado 837 00:57:30,280 --> 00:57:32,840 te recompones rápidamente y ya está 838 00:57:32,840 --> 00:57:35,099 entonces hay un sistema que es 839 00:57:35,099 --> 00:57:36,519 el bundle este 840 00:57:36,519 --> 00:57:38,719 que está bien, el bundle 841 00:57:38,719 --> 00:57:40,980 pero hay otro que es el 842 00:57:40,980 --> 00:57:43,219 sabes preferencias, que tiene gracia 843 00:57:43,219 --> 00:57:45,159 porque en algún, ¿por qué lo estamos contando? 844 00:57:45,219 --> 00:57:47,239 porque en algún momento esta se podía compartir 845 00:57:47,239 --> 00:57:48,880 entre aplicaciones, se llamaba 846 00:57:48,880 --> 00:57:58,880 ser y además estos señores podrían tener más de un más de un tipo de esas preferencias se puede 847 00:57:58,880 --> 00:58:04,280 tener esas preferencias con un nombre más de uno las versiones modelas ya te dejan compartir con 848 00:58:04,280 --> 00:58:08,139 otras aplicaciones así que esa parte se ha quitado pero bueno sigues teniendo un sitio que es como 849 00:58:08,139 --> 00:58:15,739 un fichero punto y ni clave valor clave valor clave valor o sea un nombre un valor y por aquí pues un 850 00:58:15,739 --> 00:58:21,199 nombre un valor bueno aquí cuando ese valor es el valor por defecto si no estuviera grabado 851 00:58:22,639 --> 00:58:30,500 pues es que no tiene más historia es supuestamente un sistema rápido para 852 00:58:30,500 --> 00:58:35,059 cuando te arrancan rápidamente parecer como que no te han matado y disimulan 853 00:58:36,360 --> 00:58:40,980 y te dejan guardar como un fichero punto y ni clave igual a valor clave igual a valor 854 00:58:40,980 --> 00:58:44,760 un hasón de solo un nivel 855 00:58:44,760 --> 00:58:54,260 no tienen más historia 856 00:58:54,260 --> 00:58:59,579 tú consigues un sales preferencias 857 00:58:59,579 --> 00:59:02,280 te las sacas del contexto como siempre 858 00:59:02,280 --> 00:59:05,840 ya solamente pueden ser privadas 859 00:59:05,840 --> 00:59:08,039 no os preocupéis de poner aquí 860 00:59:08,039 --> 00:59:13,559 no os preocupéis de poner una cosa en esa privada 861 00:59:13,559 --> 00:59:14,760 porque ya no puede ser privada 862 00:59:14,760 --> 00:59:18,739 Ya tiene que ser privada. No puede ser pública. 863 00:59:20,360 --> 00:59:23,199 Y una vez que las... Ah, bueno, me falta contar una cosa. Es cómo se modifican. 864 00:59:23,539 --> 00:59:26,360 Eso quizá no lo he... Eso habría que aclararlo. 865 00:59:26,860 --> 00:59:29,260 ¿Cómo se modifica? Bueno, pues para leerlas, ya habéis visto. 866 00:59:29,960 --> 00:59:33,760 Ah, no, esto es para escribirlas. Para escribirlas, pues... 867 00:59:34,500 --> 00:59:38,380 No puedes escribirlas tal cual. Tienes que sacar un editor de ellas. 868 00:59:38,500 --> 00:59:40,559 O sea, habrás preferencias y puedes preguntar por qué valor. 869 00:59:41,039 --> 00:59:43,059 Pero para escribir tienes que conseguir un editor. 870 00:59:43,059 --> 01:00:02,340 La gracia del editor es que hasta que no se hace commit no se graba todo, como una transacción de base de datos. ¿Por qué hacen eso? Es algo parecido a que si tienen miedo de que entre que empiezas a modificar y acabas de modificar, que entre medias tu aplicación falle y casque y se muera. 871 01:00:03,179 --> 01:00:05,199 Se quedaría la aplicación en un estado inconsistente 872 01:00:05,199 --> 01:00:06,780 en el que se han grabado unas cuantas cosas 873 01:00:06,780 --> 01:00:09,099 y otras no, y no se sabe muy bien si van a funcionar. 874 01:00:09,300 --> 01:00:11,159 Así que, para estar seguros de que eso no ocurre, 875 01:00:11,860 --> 01:00:13,539 en este commit ya se graban. 876 01:00:14,800 --> 01:00:15,639 Y no antes. 877 01:00:16,820 --> 01:00:19,500 Así que, en vez de tener unas aves preferencias, 878 01:00:19,679 --> 01:00:21,840 en vez de las preferencias tener un get boolean, 879 01:00:22,139 --> 01:00:24,940 pues hay que poner edit, put in, commit. 880 01:00:25,679 --> 01:00:26,300 Hay que hacer eso. 881 01:00:28,619 --> 01:00:30,900 De hecho, voy a ver qué devuelve el put in, 882 01:00:30,900 --> 01:00:54,070 porque si el put in, control alt, control n, y voy a ver el edit, control 0, edit, devuelvo un editor, y el editor, voy a saltar el editor con control b, 883 01:00:55,010 --> 01:01:01,570 se puede encadenar, como veis el put string devuelve un editor, así que puedes ponerle punto put string set y devuelve un editor, 884 01:01:01,570 --> 01:01:07,190 y al final de todo por el commit se puede abreviar en una línea al final todo esto se 885 01:01:07,190 --> 01:01:13,869 puede abreviar en una sola línea lo voy a escribir por aquí control c por ejemplo aquí mismo lo voy 886 01:01:13,869 --> 01:01:23,010 a escribir pues eso que hemos visto en pinta de java pues esto se podría haber abreviado como 887 01:01:23,010 --> 01:01:36,460 edit put in y luego poner aquí commit y no está de falta esta variable de aquí según gustos ahora yo 888 01:01:36,460 --> 01:01:45,300 lo pondría pues pues posiblemente así le hemos puesto este putin pues podrías haber puesto luego 889 01:01:45,300 --> 01:01:54,019 os puedes poner aquí un put string 890 01:01:54,019 --> 01:01:57,980 este no le saco de por ahí 891 01:01:57,980 --> 01:02:02,750 este le pongo directamente un valor 892 01:02:02,750 --> 01:02:06,210 una clave y aquí le pongo directamente 893 01:02:06,210 --> 01:02:10,559 un valor, se pueden encadenar 894 01:02:10,559 --> 01:02:13,260 estas llamadas porque si vienen de un editor 895 01:02:13,260 --> 01:02:14,619 hasta el final, hasta commit 896 01:02:14,619 --> 01:02:17,639 así que tampoco es tan 897 01:02:17,639 --> 01:02:19,500 engorroso 898 01:02:19,500 --> 01:02:20,659 el edit 899 01:02:20,659 --> 01:02:24,360 bueno, pues a ver que nos queda 900 01:02:24,360 --> 01:02:30,079 hemos visto, oficiales compartidas 901 01:02:30,079 --> 01:02:32,400 oficiales externos, ese culite 902 01:02:32,400 --> 01:02:33,719 y nos falta la cohesión por red 903 01:02:33,719 --> 01:02:36,139 bueno, espérate, la cohesión por red es que 904 01:02:36,139 --> 01:02:37,219 para otro día 905 01:02:37,219 --> 01:02:40,280 es otro día la cohesión por red, así que 906 01:02:40,280 --> 01:02:41,440 no lo adelanto 907 01:02:41,440 --> 01:02:47,440 bueno, pues no sé si tenéis alguna 908 01:02:47,440 --> 01:02:49,300 pregunta, a ver si lo voy a mirar aquí 909 01:02:49,300 --> 01:02:51,699 en el otro cacharro 910 01:02:51,699 --> 01:03:04,840 Ah, esto lo he dicho yo. Pues... no sé, decidme si se os ocurre algo que falta o queréis saber más. 911 01:03:07,050 --> 01:03:08,710 Por mi parte, en principio, nada. 912 01:03:09,929 --> 01:03:27,019 De acuerdo. La aplicación que tenéis que hacer tampoco es demasiado complicada para la práctica. Vamos a ver... 913 01:03:27,019 --> 01:03:34,820 La que hay que hacer es que tenga una pinta parecida a esta. Todo este sitio lo han dejado para el teclado. 914 01:03:35,099 --> 01:03:40,920 ¿De acuerdo? Y entonces, pues bueno, hay que acordarse aquí, en principio hay que acordarse de dos cosas. 915 01:03:41,480 --> 01:03:48,780 ¿De qué puntuación se lleva y de qué número se estaba adivinando? 916 01:03:50,219 --> 01:03:55,840 Hay que acordarse de esas dos cosas. Pues si te apagas la aplicación, cuando arranques, pues que siga con la puntuación original 917 01:03:55,840 --> 01:04:01,599 y con el número que se sabía de antes que había que acertar. Esa hay que guardarlas. 918 01:04:01,599 --> 01:04:11,079 eso cuando lo hagamos cuando lo hagáis os propongo que no viene como ninguna parte pero bueno buscar 919 01:04:11,079 --> 01:04:18,280 a ver en qué directorio de por aquí acaba estando creo que se queda en caché estoy seguro que se 920 01:04:18,280 --> 01:04:22,300 queda en caché pero ahora mismo no podría prometerlo porque al final esos son ficheros 921 01:04:22,300 --> 01:04:28,000 que se guardan en algún sitio el formato no es especialmente elegible pero creo que se guarda 922 01:04:28,000 --> 01:04:33,119 por aquí en la caché me imagino que os suena cuando vais a mirar es una aplicación a ver 923 01:04:33,119 --> 01:04:44,170 es una aplicación de cómo se hace esto cómo se hacía para ver lo que había una forma de 924 01:04:44,170 --> 01:04:52,789 preguntarle a este ir a ir a la información de la aplicación ahora vamos a ver editar 925 01:04:54,929 --> 01:05:08,469 ahora he visto esto de uso de datos no dónde está esta aplicación no los tiene pero hay otras 926 01:05:08,469 --> 01:05:17,360 aplicaciones que si tienen información yo antes tenía un botón que 927 01:05:17,360 --> 01:05:22,599 era borrar datos borrar caché voy a mirarlo en otro sitio en 928 01:05:22,599 --> 01:05:30,849 aplicaciones sin más saber aplicaciones esto si lo tenía que poner en alguna 929 01:05:30,849 --> 01:05:37,400 parte yo lo pondría en aplicaciones 930 01:05:37,400 --> 01:05:44,360 e información de aplicaciones pero bueno de todavía tener un botón de borrar 931 01:05:44,360 --> 01:05:46,179 caché, ¿dónde está el botón de borrar caché? 932 01:05:48,750 --> 01:05:49,130 ¿Memoria? 933 01:05:50,429 --> 01:05:52,070 Ah, aquí está, perdón, es que lo había dado ahí. 934 01:05:52,570 --> 01:05:54,010 Pues ya veis que tiene un borrar datos 935 01:05:54,010 --> 01:05:56,309 y un borrar caché. El borrar datos 936 01:05:56,309 --> 01:05:58,250 es cargarse estos 937 01:05:58,250 --> 01:05:58,530 files. 938 01:06:00,329 --> 01:06:02,170 Y me imagino que también estos dirs. 939 01:06:02,570 --> 01:06:04,230 Pero estos files. Y el borrar 940 01:06:04,230 --> 01:06:05,590 caché creo que es 941 01:06:05,590 --> 01:06:08,250 borrar la caché y creo 942 01:06:08,250 --> 01:06:10,010 que ahí es donde se guardan las ades preferencias. 943 01:06:12,789 --> 01:06:13,829 Estoy casi seguro. 944 01:06:14,289 --> 01:06:15,309 Pero ahora mismo no lo sé. 945 01:06:24,570 --> 01:06:25,969 Bueno, pues a mí no me queda más cosas 946 01:06:25,969 --> 01:06:30,730 hay que contar estamos como siempre aquí está en el recreo llevamos el rato de recreo si no 947 01:06:30,730 --> 01:06:35,989 tenéis otras preguntas pues yo cortaría aquí y vería si puedo subir esto que me creo que 948 01:06:35,989 --> 01:06:41,570 estoy grabando voy a ver si estoy grabando porque no sé si no estoy solo de estarlo grabando 949 01:06:44,269 --> 01:06:59,320 vale pues algo que sea de hoy aquí el último vídeo vale pues sólo llevo un gigante vídeo 950 01:06:59,320 --> 01:07:13,360 Pero bueno, lo voy a intentar. A ver si consigo yo reducir esto a un tamaño razonable y poder subirlo a algún sitio. 951 01:07:14,639 --> 01:07:18,260 Imagino que será demasiado grande, lo estaré grabando en Full HD o voy a saber. 952 01:07:21,139 --> 01:07:24,599 Bueno, pues os voy a dejar ya, si no tenéis más preguntas. 953 01:07:26,159 --> 01:07:26,380 Vale. 954 01:07:26,380 --> 01:07:43,389 De acuerdo, pues nada, a ver si las otras... Ah, mira, éramos cuatro y ahora somos tres. Ah, sí, lo está. Bueno, pues como no me oye, pues como no hay preguntas, vamos. Creo que no me podía oír. 955 01:07:43,389 --> 01:07:59,849 por cierto un aviso de acerca del examen voluntario y acerca de las normas y si 956 01:07:59,849 --> 01:08:05,210 traes un ordenador que se puede el ordenador y yo en el fondo lo recomiendo para vosotros 957 01:08:05,210 --> 01:08:14,469 y también para para mí para vosotros porque yo tengo puestos pero con el vuestro estáis 958 01:08:14,469 --> 01:08:15,449 más familiarizados 959 01:08:15,449 --> 01:08:16,510 sabéis lo que tenéis que hacer 960 01:08:16,510 --> 01:08:18,369 lo contaré 961 01:08:18,369 --> 01:08:19,430 por el aviso del profesor 962 01:08:19,430 --> 01:08:20,810 para que lo sepáis 963 01:08:20,810 --> 01:08:21,930 ok 964 01:08:21,930 --> 01:08:23,550 pues nada 965 01:08:23,550 --> 01:08:24,569 que paséis buena tarde 966 01:08:24,569 --> 01:08:25,689 hasta 967 01:08:25,689 --> 01:08:26,649 el próximo 15 días 968 01:08:26,649 --> 01:08:27,449 hasta luego 969 01:08:27,449 --> 01:08:28,270 hasta luego