| ||||
| Respuesta: Flash Bulider y SQLlite Cita:
Iniciado por acumulador Hola a todos los foreros. Hoy pido su ayuda pues estoy empeñado en aprender a programar para Iphone con Flash Builder, sin embargo tengo un problema que me tiene pegadisimo; lo que sucede es que intento conectarme a una base de datos de SQlLite; me conecto y trabajo bien con los datos pero cuando genero el IPA para instalarlo en al teléfono no importa la base de datos, yo he dado la orden de buscar la base de datos y la tabla y si no existe la creo, siempre la crea y entiendo que no esta. mi pregunta concreta es si alguien sabe la ruta o donde o como direccionar la base de datos para poder accederla desde el teléfono. Trabajo con Flash Builder 4.6 en Windows 7, la aplicación intento hacerla para Iphone 4. De esta forma me conecto a la base de datos: sqlConnection = new SQLConnection(); sqlConnection.open(File.applicationStorageDirector y.resolvePath("basedatos.db")); var stmt:SQLStatement = new SQLStatement(); stmt.sqlConnection = sqlConnection; stmt.text = "CREATE TABLE IF NOT EXISTS giberish (campo TEXT)"; stmt.execute(); Gracias por la colaboración que me puedan prestar. Cuando dices que no te importa la base de datos, ¿te refieres a cargar en tu teléfono los datos que tienes en una BD de tu computadora?? EDIT -- Bueno como veo que ya tienes unos días que publicaste tu pregunta, me adelanto a lo que me puedas contestar suponiendo que tienes el problema que menciono. Primero copia la base de datos (.db) a tu directorio "src -> data" de tu proyecto por ejemplo. Por medio de un código simple te "plancharas" la BD del "application Storage Directory" (ASD) por la que tienes en "src -> data -> *.db)". El siguiente código deberás ejecutarlo cada vez que desees cargar tu "backUp" que tienes en la carpeta de tu directorio, ten en cuenta que la BD que puedas llegar a tener en tu dispositivo será sobre escrita por la que tengas en tu directorio "DATA" de tu proyecto: var miBD:File = new File("app:/data/baseDatos.db"); var rutaBD:File = File.applicationStorageDirectory.resolvePath("base Datos.db"); miBD.copyTo(rutaBD, true); "app:/data/baseDatos.bd" es la carpeta que esta en tu proyecto (directorio "src -> data -> *.db") Por cierto, parece que si lanzas la aplicación en Windows obtendrás un error #3012 por que no te será posible sobre escribir el archivo si la aplicación de encuentra corriendo, sin embargo desplegando la aplicación en el terminal (iphone) parece no haber ningún problema, aunque claro puedes crear una lógica mas inteligente, lo cual no es muy difícil ;). Saludos!!
__________________ Tecnologias: Flash Platform, Java (Spring, HB, Struts, Grails), iOS, Android, JavaScript, PHP, SQL (MySQL, Oracle), Prolog, Assembler (PIC's) y Arduino - Electronica. Última edición por Hazek; 24/01/2012 a las 01:00 |
| ||||
| Respuesta: Flash Bulider y SQLlite var miBD:File = new File("app:/data/baseDatos.db"); var rutaBD:File = File.applicationStorageDirectory.resolvePath("base Datos.db"); miBD.copyTo(rutaBD, true); Muchas gracias por tu respuesta, ahora mismo lo pruebo. Me queda una pregunta: Al hacer copy sobre escribirá la base de datos siempre?? Como valido para que haga el miBD.copyTo(rutaBD, true) solo la primera vez?? De antemano te agradezco mucho la colaboración.
__________________ Yo vivo de preguntar, saber no puede ser lujo... |
| ||||
| Respuesta: Flash Bulider y SQLlite Cita: Bueno una forma que se me ocurre es hacer una consulta al inicio sobre la tabla, si hay 0 registros o si no existe X registro entonces sobre escribes la tabla, si hay por lo menos 1 registro o existe X registro la dejas como ya esta.
Iniciado por acumulador var miBD:File = new File("app:/data/baseDatos.db"); var rutaBD:File = File.applicationStorageDirectory.resolvePath("base Datos.db"); miBD.copyTo(rutaBD, true); Muchas gracias por tu respuesta, ahora mismo lo pruebo. Me queda una pregunta: Al hacer copy sobre escribirá la base de datos siempre?? Como valido para que haga el miBD.copyTo(rutaBD, true) solo la primera vez?? De antemano te agradezco mucho la colaboración. Saludos ;)
__________________ Tecnologias: Flash Platform, Java (Spring, HB, Struts, Grails), iOS, Android, JavaScript, PHP, SQL (MySQL, Oracle), Prolog, Assembler (PIC's) y Arduino - Electronica. |
| ||||
| Respuesta: Flash Bulider y SQLlite Si no es mucho inconveniente me puede explicar como valido si existe o no la base de datos por qle verdad como dije anteriormente en AS3 soy muy nuevo; de C# se que se hace con fileExist pero en AS3 estoy muy perdido. Muchas gracias por tu ayuda, en verdad te lo agradezco.
__________________ Yo vivo de preguntar, saber no puede ser lujo... |
| ||||
| Una disculpa! Estuve un tiempo ausente pero ya estoy de regreso. Quiza ya sea algo tarde, pero si aun tienes problema lo puedes hacer con un query sencillo: __________________________________________________ _____________ SELECT name FROM sqlite_master WHERE type='table' AND name='table_name' __________________________________________________ _____________ donde logicamente 'table_name' seria el nombre de tu tabla, si no obtienes ningun resultado sabras que la tabla no existe. Saludos!
__________________ Tecnologias: Flash Platform, Java (Spring, HB, Struts, Grails), iOS, Android, JavaScript, PHP, SQL (MySQL, Oracle), Prolog, Assembler (PIC's) y Arduino - Electronica. |
| ||||
| Respuesta: Flash Bulider y SQLlite Cita: Muchas gracias por tu respuesta pero ahora tengo un problema para probar tu codigo de ayuda es que no se como valido si hay o no resultados en el Query, me disculpo por la pregunta tan tonta pero la verdad como ya dije estoy muy novato en estos lares de FlashBuilder. Aprovecho ademas para `preguntarte como obtengo el valor de un getResult; es decir como muestro en una lista solo un nombre o un campo especifico?? por ejemplo:
Iniciado por Hazek Una disculpa! Estuve un tiempo ausente pero ya estoy de regreso. Quiza ya sea algo tarde, pero si aun tienes problema lo puedes hacer con un query sencillo: __________________________________________________ _____________ SELECT name FROM sqlite_master WHERE type='table' AND name='table_name' __________________________________________________ _____________ donde logicamente 'table_name' seria el nombre de tu tabla, si no obtienes ningun resultado sabras que la tabla no existe. Saludos! listica.dataProvider = new ArrayCollection(stmt.getResult().data); Intente con: listica.dataProvider = new ArrayCollection(stmt.getResult().data.nombre); pero no me funciono, entendiendo claro que "nombre" es un campo de mi tabla. Si me puedes colaborar con esto también te lo agradezco. De antemano muchas pero muchas gracias por tu colaboración.
__________________ Yo vivo de preguntar, saber no puede ser lujo... |
| ||||
| Respuesta: Flash Bulider y SQLlite Cita: Lo que sucede es que en la lista donde debieran salir los datos de la consulta me sale solo object Object, por eso requiero saber como taladrar hasta el campo de mi consulta en este caso "nombre". De antemano muchas gracias por la ayuda que me puedan prestar.
Iniciado por acumulador Muchas gracias por tu respuesta pero ahora tengo un problema para probar tu codigo de ayuda es que no se como valido si hay o no resultados en el Query, me disculpo por la pregunta tan tonta pero la verdad como ya dije estoy muy novato en estos lares de FlashBuilder. Aprovecho ademas para `preguntarte como obtengo el valor de un getResult; es decir como muestro en una lista solo un nombre o un campo especifico?? por ejemplo: listica.dataProvider = new ArrayCollection(stmt.getResult().data); Intente con: listica.dataProvider = new ArrayCollection(stmt.getResult().data.nombre); pero no me funciono, entendiendo claro que "nombre" es un campo de mi tabla. Si me puedes colaborar con esto también te lo agradezco. De antemano muchas pero muchas gracias por tu colaboración.
__________________ Yo vivo de preguntar, saber no puede ser lujo... |
| ||||
| Respuesta: Flash Bulider y SQLlite Cita: Esto es por la propiedad "data" del metodo getResult() devuelve un Array.Si tu consulta te devuelve por ejemplo 5 filas de resultados y tienes el campo "nombre" y edad", 'getResult()' te devolvera un arreglo de 5 objetos, cada objeto con las propiedades "nombre" y "edad", esto seria equivalente a definir algo como: miArreglo[0] = new Object({nombre:'David',edad:25}); Poniendote un codigo ejemplo, puedes iterar el objeto dentro del array dinamicamente asi: var resultados:Array = stmt.getResult().data; var salidaXfila:String = ""; for(var i:int =0; i < resultados.length; i++) { for each(var valorPropiedad:* in resultados[i]){ salidaXfila += valorPropiedad + " "; } trace(salidaXfila); salidaXfila = ""; } Recuerda que si estas en FlashBuilder, para que trace() se muestre, deberas correr la aplicacion en modo debug. Espero te funcione, seguimos en contacto Saludos!!
__________________ Tecnologias: Flash Platform, Java (Spring, HB, Struts, Grails), iOS, Android, JavaScript, PHP, SQL (MySQL, Oracle), Prolog, Assembler (PIC's) y Arduino - Electronica. Última edición por Hazek; 12/02/2012 a las 20:07 |
| ||||
| Respuesta: Flash Bulider y SQLlite Muchas gracias Hazek, por fin ya prove y me trabaja bien, pero sigo con el problema de la base de datos que mencionaba en los primeros mensajes, es sobre que al inicio no me copia la base de datos. tu me ayudaste con un código que hace copy, pero me preguntaba como hacerlo solo la primera vez por que si no siempre me sobreescribira los valores de la tabla y no tendre los datos nuevos. Espero me puedas ayudar, de antemano muchas gracias por la ayuda que me puedas prestar.
__________________ Yo vivo de preguntar, saber no puede ser lujo... |