Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Skeletron en 3 Septiembre 2009, 21:19 pm



Título: Crear Base de Datos, y Actualizarla on-line
Publicado por: Skeletron en 3 Septiembre 2009, 21:19 pm
Hola gente.. les comento que tengo un programa: VIDAY (http://www.brodasoft.com.ar/VIDay.html), que tiene 1 archivo .txt por cada dia del año.. donde tiene las efemerides de dia.. o sea: los eventos importantes...
Acaban de agregarlo a Softonic.. así que quiero mejorarlo lo mas que pueda (lean mas aca) (http://foro.elhacker.net/foro_libre/soy_feliz_mi_software_en_softonic-t266331.0.html;new#new)

El tema, es que quiero implementar ClickOnce (estoy por empezar a ahcerlo), porque el instalador que yo mismo le creé, no funciona cuando no eres el Adminsitrador de la computadora en la que estas... Entonces tengo que implementar ClickOnce para que se actualice de forma automatica él y su base de datos...

Los problemas y dudas son:
1). Tengo ganas de implementar SQL Express como base de datos.. así dejar de lado a los .txt... para agilizar el programa...
2). Si no implementase SQL, y sigo con los archivos.txt, al actualizar el programa, el programa intentará descargar y guardar los nuevos archivos en su mismo directorio, pero dará un error, proque no es el admin.. no es así???
3). En caso de utilizar SQL Express.. cual tutorial me recomiendan para aprender a crear y manejar una base de datos SQL Express para VB.Net???


Título: Re: Crear Base de Datos, y Actualizarla on-line
Publicado por: Keyen Night en 4 Septiembre 2009, 03:43 am
Aparte de lo de SQL te recomiendo usar BackGroundWorker o un Thread para el instalador; Trabaja más rápido y no deja paralizada la aplicación.


Título: Re: Crear Base de Datos, y Actualizarla on-line
Publicado por: Skeletron en 4 Septiembre 2009, 03:46 am
Eso es lo que uso...
Pero no tiene nada que ver con lo que estoy hablando.. es mas.. dije que tengo que dejar de utilizar eso, y utilizar ClickOnce..


Título: Re: Crear Base de Datos, y Actualizarla on-line
Publicado por: Atrum en 4 Septiembre 2009, 19:51 pm
Pues para utilizar SQL con VB.net te sugiero la programacion en 3 capas, es un modelo de programacion sencillo y ordenado, en la pagina oficial de ASP hay algunos ejemplos, y es muy facil aplicarlo a VB.net


Título: Re: Crear Base de Datos, y Actualizarla on-line
Publicado por: MANULOMM en 4 Septiembre 2009, 22:48 pm
Skeletron, he dado algunos cursillos sobre ClickOnce y como implementarlo, pero debes tener primero un Hosting que te soporte ASP.NET y si esposible un seridor FTP para hacer la actualzion desde el Visual Studio, si tienes todo esto escribeme un correo a:
manulom(a_r_r_o_b_a)gmail para recordame este hilo, entonces depronto haga un pequeño tutorial sobre como implementar click once.

Atentamente,

Juan Manuel Lombana
Medellín - Colombia


Título: Re: Crear Base de Datos, y Actualizarla on-line
Publicado por: Skeletron en 5 Septiembre 2009, 01:31 am
Si señor.. Tengo soporte a ASP y FTP..
Tengo el Hotsting de: elserver.com
Ya mismo te estoy enviando el e-mail...


Título: Re: Crear Base de Datos, y Actualizarla on-line
Publicado por: Foxy Rider en 5 Septiembre 2009, 03:05 am
y si usás sqlite en vez de los .txt ?
generás la database en un archivo y usás SQL de forma intuitiva y rápida =D
para .NET ni idea, pero podés tomarle prestado el assembly a Mono (o esto -> http://sqlite.phxsoftware.com/ (es el mismo que le implemento a mono el sqliteclient), aunque no sé que licencia tiene ...

respecto a los privilegios, tenés System.Security.SecurityManager.IsGranted() (http://msdn.microsoft.com/es-es/library/system.security.securitymanager.isgranted%28classic%29.aspx) junto con System.Security.Permissions (http://msdn.microsoft.com/es-es/library/system.security.permissions.aspx)

suerte con eso ;P

Saludos ~


Título: Re: Crear Base de Datos, y Actualizarla on-line
Publicado por: MANULOMM en 7 Septiembre 2009, 15:04 pm
Bueno, he visto que muchos ham hablado sobre SQLLite y en fin, creo que no se han enfocado en el verdadero problema el cua es:
"Cada vez que la aplicación se inicie y tenga conexion a un servidor ya sea de internet o de la intranet verifique el versionamiento y si encuentra un version mayor le muestre al usuario una opcion de descargar e instalar una version mayor."

Unos diran que es muy sencillo, pero la verdad sobre este tema es que hacerlo a mano nos traera unos cuantos dolores de cabeza, cpn ClickOnce esto sera cuestion de un par de clicks y punto, no tendremos que tocar el codigo, solo tendremos que publicar con un cambio de version a traves del visual studio.

Estare en el transcurso del dia haciendo un nuevo post sobre click once.

mientras tanto dejo esta referencia.

http://www.microsoft.com/spanish/msdn/vstudio/Express/Docs/ClickOnce/ClickOnce.mspx

Atentamente,

Juan Manuel Lombana
Medellín - Colombia


Título: Re: Crear Base de Datos, y Actualizarla on-line
Publicado por: Skeletron en 7 Septiembre 2009, 21:14 pm
Amigo, en realidad, Vertex está en lo cierto..
Acabo de probar ClickOnce y funciona perfectamente.. hasta me isntala el framework 3,5 automaticamente y todo.. es PERFECTO..

Pero mi problema decae en una base de datos que trae el programa...

Mi problema es el siguiente:
Cuando instalo el programa desde el setup.exe que genera el ClickOnce, el programa no se instala en Archivos de Programa y bla bla bla.. entonces no se como tener acceso a un archivo o base de datos que deberia estar en la misma carpeta en donde está el .exe de mi aplicacion...
Entonces, yo tengo que agregar como RECURSO a la base de datos... Y mi pregunta es:
Que base de datos me recomiendan?? SQL Express? SQL Lite? (que diferencias hay?) y como se implementan? algun tutorial?


Título: Re: Crear Base de Datos, y Actualizarla on-line
Publicado por: raul338 en 7 Septiembre 2009, 21:24 pm
Que base de datos me recomiendan?? SQL Express? SQL Lite? (que diferencias hay?) y como se implementan? algun tutorial?

SQL Express nunca lo he usado (aunque supongo que es igual a sql en grandes rasgos, o que la T-SQL es la misma ;D). En cuanto a SQLite, es como tener un servidor SQL en un archivo de access, es  perfecto para aplicaciones chicas. Lo unico en contra, es que no acepta triggers (desencadenadores) pero ya que a veces no es necesario: no importa  :xD


Título: Re: Crear Base de Datos, y Actualizarla on-line
Publicado por: Skeletron en 7 Septiembre 2009, 21:58 pm
Simplemente tengo que hacer lo siguiente:
En el programa, miro la version de la base de datos.. en caso de estar desactualizada (comparando con la base de datos en el hosting) descargaría las nuevas entradas...

Y en el programa, tengo que leer las entradas...
Cada entrada es una efemeride.. y tengoq eu mostrar las efemerides pro dia...
Descargate al programa VIDAy de mi web: www.brodasoft.com.ar
Luego mira en C:/Brodasoft/DataBase y mira que hay 12 carpetas (por cada mes) y 31 archovos de texto por cada dia.. dentro de cada archivo, por cada linea, se considera una efemeride..
Sería mucho mas facil agregar una base de datos SQLLITE al .exe y acabados los problemas de arministrador o no administrador y velocidad :D :)


Título: Re: Crear Base de Datos, y Actualizarla on-line
Publicado por: ^Tifa^ en 7 Septiembre 2009, 22:10 pm
Ventajas entre elegir si SQLite o SQL Server Express?

Pues SQLite es 1 sola libreria de pocos kilobytes que si la embebes dentro del codigo de tu aplicacion puedes portar tu aplicacion sin necesidad de descargarte JDBC o librerias 'extras' requeridas por ejemplo en SQL Server para poder tu aplicacion funcionar, esto sin contar que tu programa ademas de requerir ciertas librerias extras, hay algunas DB donde requieres el cliente de la DB para funcionar (No se si aplica con SQL Server pero si hay algunas bases de datos relacionales que requieren esta funcionalidad como Oracle, sino utilizas el API de Oracle OCCI que es bastante complejo y solo valido para C)

Pero el tema aca es SQL Server. Yo en tu lugar eligiese SQLite, por su poco requerimientos, portabilidad (Tiene capacidad de funcionar perfectamente con variados lenguajes scripting y compilados bajo 1 solo modulo, mientras no ocurre lo mismo con SQL Server el cual por ser privativo complica mas el asunto a la hora de portarlo a distintos lenguajes tu aplicacion), tamanio, facilidad y sobretodo por su licencia, no es lo mismo ni es igual.  ;)


Título: Re: Crear Base de Datos, y Actualizarla on-line
Publicado por: Skeletron en 7 Septiembre 2009, 22:17 pm
Es gratuito SQL Lite?
Alguien tiene algun tutorial para implementarlo en VB.Net?


Título: Re: Crear Base de Datos, y Actualizarla on-line
Publicado por: ^Tifa^ en 7 Septiembre 2009, 22:22 pm
SQL Lite tiene licencia de dominio publico, lo cual lo hace disponible para cualquier uso de cualquier tipo sin restriccion alguna  ;)

acerca de tutoriales entre SQLite y Net, hay muchos en google, un poco de busquedad no te haria nada mal.


Título: Re: Crear Base de Datos, y Actualizarla on-line
Publicado por: raul338 en 8 Septiembre 2009, 01:30 am
ahora que lo pienso, solo necesitas actualizar la base de datos??......entonces no necesitas ClickOnce, y te conviene usar SQLite

Primero, usas una tabla con un unico registro que te de la version de la base de datos. Cuando inicias el programa, lo comparas en internet y si el de este es mayor preguntas si lo quieres descargar. Todo esto es posible en el .net Framework!!!!!!! (mas info: busca webrequest y webresponse en google)


Título: Re: Crear Base de Datos, y Actualizarla on-line
Publicado por: seba123neo en 8 Septiembre 2009, 02:21 am
yo creo que con Access te sobra, cuantos registros puede haber ?, porque me parece que hacerle instalar a alguien el framework 3.5 y el servidor de SQL Server es demasiado para un programa de efemerides, hay sistema de gestion que estan realizados con archivos de texto y funcionan bien, imaginate cuando tengas que ahcer un ssitema de gestion de verdad ¿que vas a hacer? ¿ le vas a pedir la computadora de la NASA ?  :xD


Título: Re: Crear Base de Datos, y Actualizarla on-line
Publicado por: Skeletron en 8 Septiembre 2009, 03:06 am
ahora que lo pienso, solo necesitas actualizar la base de datos??......entonces no necesitas ClickOnce, y te conviene usar SQLite

Primero, usas una tabla con un unico registro que te de la version de la base de datos. Cuando inicias el programa, lo comparas en internet y si el de este es mayor preguntas si lo quieres descargar. Todo esto es posible en el .net Framework!!!!!!! (mas info: busca webrequest y webresponse en google)

Es que el Software tambien se tiene que poder Actualizar!!!


Título: Re: Crear Base de Datos, y Actualizarla on-line
Publicado por: Foxy Rider en 8 Septiembre 2009, 04:09 am
más o menos lo que te dije acá : http://foro.elhacker.net/net/como_enviar_un_datos_a_una_aplicacion_cliente-t247710.0.html%3Bmsg1195144
podés tener un archivo txt que tenga las version de la base de datos actual y del software ...
y en caso de ser necesario, descargás y actualizás...

las formas más sencillas son ....  usando un txt en tu server que contenga el MD5 de la base de datos (total, si no cambia ...) o simplemente guardando dentro de la base de datos (o el registro de win) la versión actual y comparándola con la remota ...

la base de datos que sugiero, repito, es SqLite, te va de 10 ...
eso más la librería de compresión que puse en el link al thread ese ... (para no tomar tanto badwidth en las actualizaciones)

Saludos ~


Título: Re: Crear Base de Datos, y Actualizarla on-line
Publicado por: raul338 en 8 Septiembre 2009, 16:01 pm
ahora que lo pienso, solo necesitas actualizar la base de datos??......entonces no necesitas ClickOnce, y te conviene usar SQLite

Primero, usas una tabla con un unico registro que te de la version de la base de datos. Cuando inicias el programa, lo comparas en internet y si el de este es mayor preguntas si lo quieres descargar. Todo esto es posible en el .net Framework!!!!!!! (mas info: busca webrequest y webresponse en google)

Es que el Software tambien se tiene que poder Actualizar!!!

Para actualizar la bd Vertex.Symphony ya te dio una de las tantas ideas que te estamos dando. Para actualizar el software: la forma mas simple es como el CCleaner: Avisar que hay una nueva version ¿Desea ir a la web para descargarlo? ( si se pone si se cierra), O mas al estilo WLM que hay que obligarlo a bajar la nueva verision compatible para entrar jejeje


Título: Re: Crear Base de Datos, y Actualizarla on-line
Publicado por: Skeletron en 8 Septiembre 2009, 21:25 pm
Se me acaba de Ocurrir un problem BASTATE grave creo...

Si yo a la base de datos SQLLite  de cada programa, la tengo como "recurso".. al actualizarse el programa, se me reestablecerá la base de datos a 0... y eso no lo queremos :D
Entonces, NO PUEDO TENER a la base SQLLite como recurso.. sino, que la tengo que tener en una carpetita, al lado del .exe de la aplicacion.. Pero.. con ClickOnce, no se donde se instala la aplicacion.. gran problema...
Alguien me da una idea???


Mi idea sería así:
en mi programa principal, tendré 1 variable que va a identificar la version de la base de datos...
Como la base de datos se dividirá por MESES.. en realidad, será un array con 12 valores de version.. 1 por cada mes..
Y en cuanto a la actualizacion del software, no hay problemas, de eso se encarga ClickOnce
En cuanto al manejo de la base de datos: Tendré que saber donde está, para pdoer actualizarla.. PERO no tiene que ser parte del .exe, proque con cada actualizacion de ClickOnce, se volveran los datos a 0..

Ahora bien: otra pregunta:
Una vez instalado el programa.. cuando intente acceder a la base de datos que estará en "./nombre_de_la_BasedeDatos": ¿Me dará algun error de privilegios?


Título: Re: Crear Base de Datos, y Actualizarla on-line
Publicado por: raul338 en 8 Septiembre 2009, 23:03 pm
yo creo que te estas haciendo mucho lio al cuete  ;D


la base de datos es un solo archivo que se reemplaza, no vas a perder todo, sino que "agregas la informacion" en un archivo nuevo y pisas el anterior  ;)

si el archivo es ecxesivamente grande y la "actualizacion" es poca, podrias poner como actualizacion sentencias SQL y ejecutarlas en la base de datos comun, asi te ahorras  ancho de banda repetido...  ;D


Título: Re: Crear Base de Datos, y Actualizarla on-line
Publicado por: Skeletron en 8 Septiembre 2009, 23:47 pm
OBVIAMENTE que la actualizacion será desde la Aplicacion.. Comparando valores con la base de datos del Hotings para ver QUE tengo que actualizar.. (será así Y NO DE OTRA FORMA)

Y "pisar" la base de datos, dices qe no es problema, y creo que es la cosa mas loca que he leido en mi vida...
La base de datos debe quedar intacta, y con sentencias SQL desde vb.net la actualizaré, por supuesto...

Pero como haces para limpiar a tu perro si no sabes donde está?
Como sabes a que base de datos agregarle entradas si no sabes donde está?


Título: Re: Crear Base de Datos, y Actualizarla on-line
Publicado por: raul338 en 9 Septiembre 2009, 00:42 am
no sabes donde esta??? .... .si la base de datos esta junto a tu aplicacion, le pones un nombre fijo y si no esta ¡PUM! error (alguien metio la mano y tiene que arreglarlo, sino de ultima vuelve a bajar la ultima version con la ultima base de datos y todo como nuevo ...)

en cuanto pisar la base de datos, imagina que tu base es "abc", luego de pisarla queda "abcdefgh" y listo. que problema hay? que entiendes por "pisar" una base nueva a la vieja? y si no la quieres pisar, muevela a la carpeta de backups y listo. Si falla la actualizacion queda la vieja version.

Si tu base pesa 16 mb, y la parte "actualizada" 320 kb, empiezas a bajar solo esos 320kb y los agregas a los 15 y tantos megas que tiene la base del cliente.


No es tan dificil, si quieres te ayudo, no hay problema


Título: Re: Crear Base de Datos, y Actualizarla on-line
Publicado por: seba123neo en 9 Septiembre 2009, 00:49 am
¿¿ Skeletron ya creaste la bases de datos primaria ?? si queres yo te ayudo, tengo un proyecto que pasa de archivos de texto a una base de datos, para lo tuyo tendria que cambiar un par de cosas y ya tendrias la base de datos..si queres me pasas los archivos que tengas por meses de las efemerides y lo veo....tambien se me ocurrio que porias poner un campo en la base que diga que version de la base es la efemeride.por ejemplo el usuario tiene la version 1 y todas las efemerides tienen en ese campo un 1, en la version 1.1 de la base las nuevas efemerides tendran 1.1 para identificar que fueron agregadas en esa version y asi para todas, entonces podes hacer que cuando el usuario descarge una nueva version, podes colorear o identificar cuales son las nuevas efemerides con respecto a la version anterior.en algun lado tendrias que guardar la version que tenia antes y la que tiene ahora, y entonces si actualizo desde la version 1 a la 1.5 , tendrias que colorear todas las de 1.1,1.2,1.3,1.4...es solo una idea.

saludos.


Título: Re: Crear Base de Datos, y Actualizarla on-line
Publicado por: MANULOMM en 10 Septiembre 2009, 16:55 pm
ps otra opcion es SQL Compact y es lo mismo el click once te instala los drivers y todo.... ;-) ;-) ;-)


Atentamente,


Juan Manuel Lombana
Medellìn - Colombia