Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: 24K en 20 Diciembre 2011, 05:30 am



Título: incluir base de datos en instalador de proyecto en C# (ayuda)
Publicado por: 24K en 20 Diciembre 2011, 05:30 am
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.


Título: Re: incluir base de datos en instalador de proyecto en C# (ayuda)
Publicado por: Novlucker en 20 Diciembre 2011, 12:43 pm
Deberías de intentar con SQL Server CE :P

Saludos


Título: Re: incluir base de datos en instalador de proyecto en C# (ayuda)
Publicado por: 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. 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.

V6Oe2av1uOo

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.


Título: Re: incluir base de datos en instalador de proyecto en C# (ayuda)
Publicado por: seba123neo en 21 Diciembre 2011, 06:34 am
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.


Título: Re: incluir base de datos en instalador de proyecto en C# (ayuda)
Publicado por: 24K en 21 Diciembre 2011, 07:00 am
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
  1. public string cadena = "[nombre de archivo].ini";
  2.  

o

Código
  1. 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. ;)


Título: Re: incluir base de datos en instalador de proyecto en C# (ayuda)
Publicado por: seba123neo en 21 Diciembre 2011, 07:31 am
aca te paso un ejemplo de conexion que pongo en el archivo, es solo una linea.

Código
  1. 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.


Título: Re: incluir base de datos en instalador de proyecto en C# (ayuda)
Publicado por: 24K en 21 Diciembre 2011, 08:03 am
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 (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.


Título: Re: incluir base de datos en instalador de proyecto en C# (ayuda)
Publicado por: seba123neo en 21 Diciembre 2011, 08:47 am
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:

(http://3.bp.blogspot.com/_BJDkkSrRvhU/S5x6d3x14HI/AAAAAAAAAJ0/sCwkYF9N84c/s400/016.JPG)

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.


Título: Re: incluir base de datos en instalador de proyecto en C# (ayuda)
Publicado por: 24K en 21 Diciembre 2011, 10:00 am
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.


Título: Re: incluir base de datos en instalador de proyecto en C# (ayuda)
Publicado por: Novlucker en 21 Diciembre 2011, 12:13 pm
Yo solo voy a responder a esto ...

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


Título: Re: incluir base de datos en instalador de proyecto en C# (ayuda)
Publicado por: ANDRESY en 16 Septiembre 2015, 04:42 am
Hola, les cuento como solucione un problema que tuve hace días generando un instalador con la edición express de visual c# 2010.
El problema es que no podía hacer funcionar mi base de datos en la maquina donde instalaba el sistema por error de permisos de usuarios utilizando la autentificacion de windows.
1) Agregue un nuevo proyecto de Base de Datos basadas en servicios.
2) Luego abre una pantalla para asignar una base de datos existente o no, en mi caso utilice la base que ya tenia en la capeta C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\Data.
3) Luego el asistente realiza una copia de la base de  datos al directorio de la aplicacion.
4) en app.config genera el siguiente codigo.

add name="baseConnectionString1"
            connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\base.mdf;Integrated Security=True;User Instance=True"
            providerName="System.Data.SqlClient" />
5) Entonces en tu clase de conexion agregas
using System.Configuration;

y el codigo para conectar.
SqlConnection CON = new SqlConnection(ConfigurationManager.ConnectionStrings["baseConnectionString1"].ConnectionString.ToString());

                CON.Open();
                return CON;
6) luego generas la publicacion donde te deja el archivo setup.exe , todo lo que contiene en la carpeta donde se genero este archivo (se genera donde vos le indicas) mas las subcarpetas deben ir juntos para que el cliente lo instale en su maquina.

De esta manera podes enviarle solo el instalador  y podes modificar la conexion si es necesario luego de ser generado el setup abriendo con un bloc de notas el archivo  con extensión (.exe.config)