Como conectar base de datos on-line con Aplicacion de Escritorio

Iniciado por Skeletron, 21 Octubre 2009, 03:07 AM

0 Miembros y 1 Visitante están viendo este tema.

Skeletron

Hola gente..
Les comento que aqui en mi PC, crearé una base de datos de SQLite con todos los registros que tiene que tener (algo de 15.000 entradas)
Luego subiré ese archivo database a mi web (que por ahora solo tengo que acceder para LEERLO)...

Y quiero que desde una aplicacion (que todo el mundo puede utilizar), se acceda a esa base de datos, para descargar las actualizaciones (entradas de la base de datos)
Una entrada de la abse de datos, seguramente será el "numero" de version de la base de datos.. En caso de que el software tenga un numero distinto, comenzará a descargar aquellas entradas que le falte..

Pero.. como hago para acceder desde mi aplicacion a la base de datos, para leer las entradas y "agregarlas" a la abse de datos local de la PC??

Estoy programando en vb.net y los codigos que utilizo para "SELECTear" es:

        Dim SQLconnect As New SQLite.SQLiteConnection()
        Dim SQLcommand As SQLiteCommand
        SQLconnect.ConnectionString = "Data Source=C:/exejmplo/database.db3;"
        SQLconnect.Open()
        SQLcommand = SQLconnect.CreateCommand
        SQLcommand.CommandText = "SELECT * FROM Usuarios"
        Dim SQLreader As SQLiteDataReader = SQLcommand.ExecuteReader()
        lst_records.Items.Clear()
        While SQLreader.Read()
            msgbox(String.Format("ID = {0}, Title = {1}, Description = {1}", SQLreader(0), SQLreader(1), SQLreader(2)))
        End While
        SQLcommand.Dispose()
        SQLconnect.Close()
    End If

Skeletron

Si me dicen que simplemente cambio C:/xxxx por http://xxxxx, me corto los huevos :)
No pobre porque estoy hacindo limites, derivadas e integrales hasta en las rodillas...

Sigo estudiando.. Cya!

seba123neo

Hola, mmm no creo que tengas que conectarte con al bases de datos web, es mas no hace falta, supongamos vos tenes la bases de datos local con 15 mil registros esa es la version 1.0, en la version 1.1 le agregaste 500 registros, esos 500 registros que esten en algun archivo de texto en la web y descargas el archivo lo recorres y vas insertando en la base, seria como una simple importacion de registros, al terminar de importar los 500 por ejemplo actualizas en la base de datos local la version de la base y asi la proxima ves que chequees por actualziaciones la version ya va a estar actualizada y no va a descargar nada.yo lo haria con transacciones, o sea que importe todos los registros o no importe nada, por las dudas ocurre algo durante la importacion.

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Skeletron

Upa... puede ser...
Que pasa si la version 1.0 tiene 1000 entradas..
en la 1.1 hay 1.200
y en la 1.2 hay 1.500

SUpongamos que X usuario tiene la version 1.0 y ya esta la version 1.2

Que tendria que descargar???
las 500 entradas??
pero si alguien tiene la 1.1???
tendria que estar el archivo para los que tienen la 1.0 y se tiene que actualizar a la 1.2, y el archivo para los que tienen la 1.1 y tienen que llegar a la 1.2
o me equivoco?

seba123neo

#4
eso lo podrias solucionar poniendo un campo mas a la base y al archivo, que sea oculto para el usuario, pero que te sirva a vos para saber en que version fue agregada tal efemeride, por ejemplo un campo llamado "version" que diga el numero de version en la que se agrego, entonces tendrias que bajar siempre el ultimo archivo y al importarlos solo importar los que tengan el campo de la version mayor al que esta actualmente.imaginate que todo esto no dura nada, no importa si se va haciendo mas grande el archivo, un archivo de texto no pesa nada y se baja rapidisimo.

si tengo un rato mañana hago un ejemplo de como seria, no importa si ya lo tenes, seguro a alguien le va a servir de algo.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Skeletron

Otro genio de la suposicion.. Como sabias Sebas que te hablo de VIDay?? (el programa de las efemerides :P)
Bueno sebitas, te comento y te juro que esa era mi idea... y luego dije: "Y que diferencia hay con hacerlo con el archivo .db3 de SQLite"???
Acordate que SQLite crea como base de datos a 1 solito archivito...
Si subo ese archivito SQLite al hosting, hasta en un futuro podria hacerme un "Agregador" de efemerides.. como un "administrador" para mi, y hacerme mas facil el tema de subir nuevas efemerides...
Y en cuanto a la aplicacion, ¿no sería mas facil? creo en un archivo temporal local con el contenido de "SELECT...... WHERE version > 1.1" (tendria que utlizar esa columna VERSION) y luego hacer INSERTS desde ese archivo local...
Así siempre estará el archivo de base de datos en el server(con la columna version) y creo archivos locales con lo que necesito actualizar..



Espero tu opinion nuevamente...

Aunque, si me dices que hacer un Select a un archivo db3 en una web, es dificil, o no es tan facil como hacerlo localmente, HAGO lo que tu dices...

Skeletron

Imagina si tendria que si descargo el .txt, luego tendré que ver DESDE QUE LINEA hasta el final es lo que tengo qu agregar ¬¬.. sería mas facil hacer un SELECT al archivo database que esta en el hosting para no renegar averiguando desde que linea tengo que hacer los INSERTS... ya que se crearía mi archivo local solo con lo que yo necesito "actualizar"
así de esa manera hago un INSERT por cada linea del .txt
Las entradas del txt local serían de este formato:
MES * DIA * VERSION * TEXTOEFEMERIDE

Tendria que cortar la "Linea" en trosos por cada "*" y cargar cada "token" en cada valor de la entrada.. o no=?

seba123neo

haber ¿ que campos tenes en la base de datos ? vos a un .txt le podes hacer un select no se si sabias, estoy pensando ahora si se puede hacerle el select al archivo remoto txt y directamente no neceitas bajar nada, que se llene un DataReader en memoria con los registros que solo neceistas y los importas.voy a probar algo.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Skeletron

UN SELECT A UN .TXT?!?!?!??!?!
Huy dios.. que mucho que me falta de aprender...
En este caso.. que diferencia habria con crear el .db3 ??? ¬¬ (lo odias seguramente :P)

Perdon por la ignorancia, pero tengo una dudita:
Cuando hago el:
        SQLcommand.CommandText = "SELECT * FROM Usuarios"
        Dim SQLreader As SQLiteDataReader = SQLcommand.ExecuteReader()
Luego obtengo los datos con un:
        While SQLreader.Read()
            msgbox(String.Format("ID = {0}, Title = {1}, Description = {1}", SQLreader(0), SQLreader(1), SQLreader(2)))
        End While

Pero eso se haría 1 sola vez no??? o sea.. en el SQLreader queda TODO EL RESULTADO de lo que devolvió el archivo??? o irá accediendo al hosting con cada vuelta del WHILE??? (perdon la ignorancia tan BRUTA)
Porque si TODO SE "GUARDAR" temporalmente en el SQLreader, entonces PERFECTO.. en vez de hacer el msgbox, hago un INSERT a la base de datos local, y ni tengo que crear archivos intermedios..

seba123neo

por lo que estuve leyendo me parece no se puede usar sqllite en forma remota, ojala me equivoque, porque sino seria re facil. pero bueno supongmaos que no se puede, las opciones son:

1 - que descarges un archivo con las efemerides y lo importes como vimos, leyendo el archivo linea por linea y haciendo inserts en la base de datos segun la version.

2 - se puede leer un archivo CSV remotamente, este es como un arhivo de texto pero delimitado por algun separador por cada campo. eso se puede leer directo de internet sin bajar nada y cargarlo en un datatable, y despues solo debes recorrer ese datatable e insertar.

3 - podes bajar el archivo csv y hacerle el select que quieras e importar.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson