|
||
|
![]() |
![]() |
Avisos |
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
Herramientas |
#1
|
||||
|
||||
![]()
Hola una vez más!
Tengo una pequeña duda. Estoy haciendo una aplicación para android y mi aplicación utiliza base de datos sqlite, la base de datos tiene un tamaño de unos 3 megas. El caso es que quiero probarla en mi teléfono y cuando genero la aplicación me genera un apk de 280 Kb, entonces ahí no va ni de coña la base de datos. No se como hacer para que vayan las dos juntas. He preguntado a algún colega y me ha dicho que se puede crear la base de datos en ejecución la primera vez y eso lo sabia, en el metodo del datahelper pero claro... como voy a hacer eso si para mi aplicación tendría que hacer como 4000 inserts. Además, lo de crear la base de datos es para que cuando de un problema de que no la encuentra no pete la aplicación... Como hago esto? ![]() Gracias!!!
__________________
BE GRANIZADO MY FRIEND
|
|
#2
|
||||
|
||||
Yo te cuento como lo he hecho yo en alguna ocasion. Es un poco cutre pero funciona. Yo incluyo los datos de la bbdd en un fichero de texto en csv y en la primera ejecucion creo la base sqlite y meto todos los datos. Se que hay alguna otra manera,pero a mi esta me ha dado buenos resultados si no hay una cantidad excesiva de registros.
Enviado desde mi Galaxy Nexus usando Tapatalk |
#3
|
||||
|
||||
Mete la base de datos en assets, y en la primera ejecucion la copias a la memoria o a la sdcard, puedes aprovechar para comprimirla y que ocupe menos espacio (en assets).
Tambien la puedes tener en un servidor en internet, y la bajas a la primera ejecucion.
__________________
Saludos
![]() -Pedro- http://www.maicas.net/ (desarrollo de software) http://droid.maicas.net/ (solo android) |
#4
|
||||
|
||||
Yo te cuento como lo he hecho yo en alguna ocasion. Es un poco cutre pero funciona. Yo incluyo los datos de la bbdd en un fichero de texto en csv y en la primera ejecucion creo la base sqlite y meto todos los datos. Se que hay alguna otra manera,pero a mi esta me ha dado buenos resultados si no hay una cantidad excesiva de registros.
Enviado desde mi Galaxy Nexus usando Tapatalk ![]() gracias! Enviado desde mi GT-I9000 usando Tapatalk
__________________
BE GRANIZADO MY FRIEND
|
#5
|
||||
|
||||
y lo que dices de meterlo en la tarjeta...¿tengo que cambiar la ruta en la aplicacion entonces, no? si meto mi aplicacion en el market, tengo que hacer que el usuario haga eso? es que sino me sigue pareciendo mejor forma lo de ejecutarlo desde el oncreate del databasehelper... le dare una vuelta, gracias! Enviado desde mi GT-I9000 usando Tapatalk
__________________
BE GRANIZADO MY FRIEND
|
#6
|
||||
|
||||
No puede ser tan dificil.
Yo te cuento como lo he hecho yo en alguna ocasion. Es un poco cutre pero funciona. Yo incluyo los datos de la bbdd en un fichero de texto en csv y en la primera ejecucion creo la base sqlite y meto todos los datos. Se que hay alguna otra manera,pero a mi esta me ha dado buenos resultados si no hay una cantidad excesiva de registros.
Enviado desde mi Galaxy Nexus usando Tapatalk ![]() estoy empezando a ver la cosa un poco mal... ![]() Te agradecería que me echases una mano ![]()
__________________
BE GRANIZADO MY FRIEND
|
#7
|
||||
|
||||
Claro que te echaré una mano
![]() Enviado desde mi Galaxy Nexus usando Tapatalk |
#8
|
||||
|
||||
Perfecto!!
Perfecto! estaré esperando tu comentario como agua de mayo
![]() La verdad es que tampoco creo que tarde mucho, y si tarda mucho me invento un "espere mientras la aplicación se instala", jajajaja!! ![]() Gracias!! PD: Esto no significa que no esté abierto a más opciones... si alguno tiene algo en el tintero que lo eche, que eso dentro no es bueno ![]()
__________________
BE GRANIZADO MY FRIEND
|
#9
|
||||
|
||||
Bueno, al lio:
lo primero es meter el archivo con los datos en formato csv en res/raw. En mi caso separo los campos conun punto y coma y los registros van uno en cada linea. Te pego ahora el codigo que uso en el dbhelper Código:
public class dbHelper extends SQLiteOpenHelper{ private static final String DATABASE_NAME = "tubase.db" ; private static final int DATABASE_VERSION = 1; InputStream inputStream; public dbHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); inputStream = context.getResources().openRawResource(R.raw.nombreDelCsv); } @Override public void onCreate(SQLiteDatabase db) { //aqui crea la tabla en tu base de datos importaCsv(); } private void importaCsv(){ String texto=""; String[] filas; String[] datos; texto=readTxt(); filas=texto.split("\r\n"); for(int i=0;i<filas.length;i++){ //cada uno es un registro ContentValues values = new ContentValues(); datos=filas[i].split(";"); values.put("campo", datos[0]); //asi para cada campo db.insertOrThrow("tabla", null, values); } //aqui lee el fichero y devuelve un string con lo leido private String readTxt(){ String s; ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); int i; try { i = inputStream.read(); while (i != -1) { byteArrayOutputStream.write(i); i = inputStream.read(); } inputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } s=byteArrayOutputStream.toString(); return s; } Un saludo |
#10
|
||||
|
||||
De lujo!
De lujo Pikoh!
le acabo de echar un vistazo y está guay! ahora ya se me ha hecho un poco tarde pero en cuanto tenga un rato le voy a dar al codigamen a ver si me quito la base de datos de encima, que no me esperaba que me fuese a dar tanto lío. Ah! una cosa. Con esto puedes probar en el ordenador con el emulador pero cuando lo pases al teléfono... ¿? Tienes que meter el fichero desde fuera o cuando generas el apk lo que metas en el res/raw va dentro del apk. Muchas gracias!! PD: En la vida se me habría ocurrido que una cosa tan tonta como lo de la base de datos diese tanto lio...
__________________
BE GRANIZADO MY FRIEND
|
#11
|
||||
|
||||
Lo que metes en raw va dentro del apk,no necesitas hacer nada mas. Ya me contaras como va la cosa
![]() Enviado desde mi Galaxy Nexus usando Tapatalk |
#12
|
||||
|
||||
Muchas gracias Pikoh, tu forma de cargar datos me ha sido de mucha ayuda y resulta la más elegante de las opciones.
|
#13
|
||||
|
||||
Yo creo que creando la base de datos primero y guardándola en assest es más sencillo.
mírate este vídeo, por el minuto 50 te dice como meter una base de datos ya creada en la aplicación aunque te recomiendo que te le veas desde el 26 para que entiendas bien el código que ha ido haciendo. Video: |
![]() |
![]() |
||||||
|