incluir base de datos en instalador de proyecto en C# (ayuda)

Iniciado por 24K, 20 Diciembre 2011, 05:30 AM

0 Miembros y 3 Visitantes están viendo este tema.

24K

Hola a todos, bueno presentándome y esperando que este tema esté en el lugar correcto, soy estudiante de Ing. de sistemas en Perú, y para terminar el ciclo nos pidieron un proyecto final en C#. Mi proyecto ya está terminado lo malo es que incluye una conexión con base de datos SQL server. Lo que no puedo hacer es crear el instalador de mi proyecto junto con la base de datos para así llevar mi proyecto a clase, instalarlo en la computadora del salón y exponer mi trabajo, la idea es no tener que instalar el visual studio 2010 ni el sql server 2005 el clase y llevar todos los datos, se me va a hacer muy dificil hacer todo eso.
Espero me puedan ayudar, ya investigue y hablan de un script de la base de datos, pero no conozco el tema de los scripts y la verdad quisiera algo mas detallado para poder explicarlo en clase.
Gracias por la ayuda que me puedan brindar.

Novlucker

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

24K

por que probaría con eso ya tengo la base de datos hecha y llena, seria tener que volver a tipear toda la información, no lo veo nada alentador tu solución. debe haber una forma en que los desarrolladores de software entregues sus trabajos sin tener que instalarles  al cliente el sql server. Cuando tu adquieres un programa que implique guardar datos, no te instalas el sql server, sino que este programa ya viene implementado con su motor de datos; es por eso que quiero saber como se hace esto.
sigo buscando y sigo buscando y encontre esto, pero no se por que ami no me funciona.

[youtube=425,350]http://www.youtube.com/watch?v=V6Oe2av1uOo[/youtube]

cuando agrego mi base de datos me dice que no se puede por que esta siendo usada por otra persona o programa, que cierre todas las aplicaciones que puedan estar usándolas. pero no tengo nada abierto  >:(; luego detengo mi servidor de bases de datos y se agrega  ;D , pero luego no reconoce o no puede leer los elementos de mi base de datos "error en la instancia"  :huh:; ya intente de todas formas, iniciando de nuevo el servidor, etc, etc etc y nada.
Bueno a seguir buscando, pero en cuanto encuentre la solución se los paso para que nadie vuelva a renegar y sufrir como yo.

seba123neo

el visual studio 2010 no vas a tener que instalarlo, eso es seguro, pero el SQL Server si, por lo menos en una PC que haga de servidor...sino es imposible que montes tu base en sql server.

es facil, haces un backup de tu base de datos con el Managment de SQL Server, eso te genera un archvio de extension .bak, y despues lo restauras a ese backup en la pc de tu escuela, asi de facil.

lo unico que tenes que llevar es el .exe final de la aplicacion y nada mas, y si usas algunas librerias de terceros llevarlas tambien.

yo normalmente llevo el .exe solo con un archivo .ini (es un archvio de texto comun), en este archivo esta la connectionstring al servidor sql sever, entonces si el servidor por alguna razon cambia de nombre o cambia el nombre de la base, no debo compilar la aplicacion de nuevo, eso me da flexibilidad para cambiar algo de la conexion cuando yo quiera, el programa lee ese .ini y se coencta con lo que diga el archivo.

no necesito hacer un instalador ya que solo necesito el .exe y ese archivo .ini, no uso librerias de terceros, solo las estandar del framework mismo, pero a esas no hay que llevarlas, con tener instalado el framework ya es suficiente.

si tu programa no tiene dependencias externas mas que las del propio framework entonces con llevar el .exe ya es suficiente.

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

24K

Haber haber, en primer lugar gracias por tu respuesta, es muy buena, solo me quedan algunas dudas:
lo del backup ya está; incluso genero el script de mi base de datos y luego importo la base de datos a la pc de la escuela, listo. lo que me quedaba duda es acerca de la cadena de conexión, si lo mandaba a otra pc de hecho que cambia la cadena de conexión; entonces me mencionaste el archivo .ini, lo cual me pregunto que pongo en el archivo.ini, la cadena de conexión de mi pc o de la escuela, (yo creo que sería de la escuela obvio); y donde guardo ese archivo .ini, en la misma carpeta que esta mi ejecutable?; y como lee ese archivo?, haber si estoy en lo correcto:

Código (csharp) [Seleccionar]

public string cadena = "[nombre de archivo].ini";


o

Código (csharp) [Seleccionar]
public string cadena = "[ruta del archivo].ini";

Bueno gracias por tu respuesta, probaré los resultados primero en la casa de un compañero y luego les cuento. ;)

seba123neo

aca te paso un ejemplo de conexion que pongo en el archivo, es solo una linea.

Código (vbnet) [Seleccionar]
server=SERVER01\SQLEXPRESS;initial catalog=base;uid=prueba;pwd=123;MultipleActiveResultSets=True

lo que hago es leer el .ini y cargo esa linea en una variable y me conecto con esa.

"SERVER01" es el nombre de la PC en red.

si el sql server es el express siempre va seguido de "\SQLEXPRESS", pero si el sql server es el enterprise o version full, va solo el nombre del servidor, igualmente cuando entras al managament ahi te pone el nombre al cual te conectas, debe ser el mismo que aparece ahi, no le podes errar.

"initial catalog" es el nombre de la base de datos y despues "uid" es el nombre del usuario y "pwd" el password del usuario en sql server.

en tu casa pones la conexion de tu casa, y en tu escuela la de tu escuela, ya que las maquinas se van a llamar diferentes y no va a ser el mismo "server" al cual te conectas, pero el nombre de la base y lo demas queda igual.

debes poner el .ini en el mismo lugar del .exe, obviamente chequea antes de leer que exista el archivo y si no existe no abras el programa y manda un mensaje.

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

24K

Bien bien bien, ya casi lo tengo, la version que tengo en casa es full, no se cual sera de la escuela, pero el docente pone en el data source el numero ip seguido de otro nombre algo asi:
"data source=10.11.0.50\colegio;... "
pero aun no sé como haces para que la aplicacion lea el archivo .ini, ya lo intente como te puse mas ariba pero no me resultó.
Por otro lado encontre algo sobre un archivo de configuración (app.config), agregé ese elemento a mi proyecto le puse el codigo correspondiente
http://geeks.ms/wikis/arquitecturasoftware/manejando-cadenas-de-conexi-243-n-en-net-con-c-3-3.aspx
y me dio con mi propia cadena de conexión, el problema es como hago para que me lea el servidor o el nombre de la pc en red que esta configurado por defecto, probé en mi pc con [local] y no dio, también con .\SQLEXPRESS y tampoco (ya me aclaraste por que), pero lo quiero dejar listo para que como tu dices llevar solo el ejecutable, restaurar mi base de datos y tatán, exponer mi trabajo. nada más. Te sigo agradeciendo y seguiré buscando soluciones.

seba123neo

poner el numero de IP privada como pone tu profesor (10.11.0.50) o el nombre de la pc como yo te dije es lo mismo.

otra cosa es que el nombre de instancia puede cambiar, cuando se instala el sql server express por ejemplo, el nombre por defecto de la instancia es "SQLEXPRESS", pero podes cambiarlo y ponele cualquier nombre por ejemplo "CASA" y entonces despues para coenctarte deberias poner "nombredelapc\CASA". yo siempre lo dejo por defecto al nombre.

para leer el archivo .ini es como leer un archivo de texto (.txt), busca como leer un archivo de texto en C# en internet vas a encontrar miles de ejemplos.

haber, cuando entras al managament del sql server en tu pc arriba dice donde te vas a conectar, por ejemplo en mi notebook es "NOTEBOOKSEBA\SQLEXPRESS"

un ejemplo de internet:



en este caso es "DEXTER\SQLEXPRESS", eso lo pones en el .ini y ya funciona.

otra cosa es que crees tambien un usuario con contraseña, el ejemplo que yo te envie se conecta con el usuario "prueba" y password "123". los usuarios los creas ahi mismo en el managament, en la sección de seguridad-logins.

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

24K

Bien lo que me faltaba; gracias por todo ahora con toda la información recopilada podre terminar de hacer el proyecto; haber si luego les informo de mis avances. Gracias por todo seba123neo fuiste de mucha ayuda, ahora a ejecutar todo lo aprendido y luego les cuento.

Novlucker

Yo solo voy a responder a esto ...

Cita de: 24K en 21 Diciembre 2011, 06:23 AM
por que probaría con eso ya tengo la base de datos hecha y llena, seria tener que volver a tipear toda la información, no lo veo nada alentador tu solución. debe haber una forma en que los desarrolladores de software entregues sus trabajos sin tener que instalarles  al cliente el sql server.

Los datos entre servidores no se vuelven a tipear, como han comentado antes, se respaldan o exportan. Y por otra parte, los desarrolladores, de no ser necesario una base de datos como SQL Server, utilizan bases de datos embebidas como SQL Server CE, SQLite o Firebird entre otras

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein