domingo, 20 de octubre de 2013

App. Config, cadenas de conexión

Hola a todos:

En este articulo haremos una incursión al archivo de configuración o App.Cofig para definir una cadena de conexión a una Base de Datos:
  • Agregar un archivo de configuración a un proyecto
  • Definir una cadena de conexión a una Base de datos
  • Utilizar el archivo de configuración para obtener la cadena de conexión
Entrando en contexto..
Imagine, que hoy desarrolla un sistema con 20 Formularios, la cual va a instalar en 50 Pc’s que utilizaran para la administración de su empresa, su conocimiento sobre las ventajas de usar un archivo de configuración es nula, así que usted uso lo que muchos programadores llegamos a utilizar en nuestro inicios, establecer la cadena de conexión en cada método o función donde necesitemos comunicarnos con la Bd, algo como esto:

C#:

using System.Data.SqlClient;
private void btnProbar_Click(object sender, EventArgs e)
{
    using(SqlConnection cnx = new SqlConnection("Data Source=LUISESCOBAR-PC;Initial Catalog=Directorio;Integrated Security=True"))
    {
        cnx.Open();
        MessageBox.Show(cnx.State.ToString());
    }
}

Vb.Net:

    Private Sub btnProbar_Click(sender As System.Object, e As System.EventArgs) Handles btnProbar.Click
        Using cnx = New SqlConnection("Data Source=LUISESCOBAR-PC;Initial Catalog=Directorio;Integrated Security=True")
            cnx.Open()
            MessageBox.Show(cnx.State.ToString())
        End Using
    End Sub

y para los que tienen mas experiencia pero aun no llegan a conocer los beneficios del archivo de configuración, establecer la cadena de conexión en una variable global del tipo String podría aparentar ser una buena solución ya que se asigna una sola vez y se usa en todas las consultas requeridas.

C#:

using System.Data.SqlClient;

namespace sinAppConfig
{
    public class Connection
    {
        public static SqlConnection Conexion()
        {
            return new SqlConnection("Data Source=LUISESCOBAR-PC;Initial Catalog=Directorio;Integrated Security=True");
        }
    }
}

Usamos la clase Connection:

private void btnProbar_Click(object sender, EventArgs e)
{
    //Utilizamos la clase connection para abrir la cadena de conexion
    using(SqlConnection cnx = Connection.Conexion())
    {
        cnx.Open();

        MessageBox.Show(cnx.State.ToString());
    }
}

Vb.Net:

Imports System.Data.SqlClient

Module Module1

    Public Function Connection() As SqlConnection
        Return New SqlConnection("Data Source=LUISESCOBAR-PC;Initial Catalog=Directorio;Integrated Security=True")
    End Function

End Module

Usamos la función Connection declarado en el modulo Module1:

Public Class Form1

    Private Sub btnProbar_Click(sender As System.Object, e As System.EventArgs) Handles btnProbar.Click

        'Usamos la funcion publica Connection declarada en el modulo Module1
        Using cnx = Connection()
            cnx.Open()

            MessageBox.Show(cnx.State.ToString())
        End Using
    End Sub
End Class

Bien, continuando con nuestro caso hipotético, imagínese que después de algún tiempo se le notifica de la necesidad de modificar el nombre del server o la ubicación física del mismo, trayendo con esto la necesidad de modificar nuestra cadena de conexión pero, como declaro su cadena de conexión en alguna clase publica o modulo para los de Vb.net y esta clase o modulo se comprimió junto con el Exe al momento de crear su installer ya no tiene acceso a ella desde fuera del proyecto, así que no tendrá otra opción que abrir su proyecto desde el Vs y modificar su cadena de conexión en el lugar donde lo haya declarado, si es en una clase publica o modulo solo tendrá que modificar una sola vez pero, si declaro la cadena en cada método o función donde se requería la comunicación con la Bd tendrá un problema mas grande (aunque no monstruoso), en realidad modificar la cadena de conexión no será el problema puesto que usando la combinación de teclas Ctrl + F podrá fácilmente buscarla y reemplazarla por la nueva.

El problema viene al momento de pasar esta actualización a todas las instalaciones de su Software, ya que como sabrá, al momento de hacer la modificación tendrá que compilar de nuevo los proyectos (el que contiene su desarrollo y el proyecto Setup) e ir a cada equipo donde su software este instalado, desinstalar y posteriormente instalar de nuevo su software, este es el verdadero problema ya que como se abra dado cuenta, no es tarea sencilla ya que la actividad no se resume en una acción si no en varias, ahora si consideramos la disponibilidad de los usuarios para dejarnos trabajar a nosotros mientras ellos se retrasan en sus actividades, estaremos en un problema.

¿ Solución? usar el archivo de configuración….

Si utiliza un archivo de configuración no tendrá tantos problemas, ya que el utilizarlo simplifica la tarea a únicamente ir al directorio de instalación ubicar el archivo App.Config, abrirlo con un editor de texto como NotePad, modificar su cadena de conexión, guardar y listo a seguir usando su aplicación sin mas ni mas; no necesita abrir el proyecto en el Vs ni compilar, mucho menos instalar de nuevo.

¿Comprende ahora la gran utilidad de este archivo tan simple?…

Hasta este punto creo que ya esta convencidos de la utilidad del archivo de configuración, ahora vayamos viendo como agregarlo a nuestro proyecto y como utilizarlo:

Agregar un archivo de configuración a un proyecto

En este ejemplo utilizaremos una Bd creada en SqlServer Express 2008 y Vs2010 Ultimate, la Bd es únicamente para probar la conexión, puede crear cualquiera en su Server.

Antes de comenzar cree un proyecto del tipo Windows Forms, abra el formulario y agregue un botón.

Para crear el archivo de configuración tenemos dos opciones:

Utilizar el “Asistente para la configuración de orígenes de base de datos” o insertar un nuevo elemento al proyecto del tipo App.Config, veamos paso a paso cada uno de ellos,

Utilizar el “Asistente para la configuración de orígenes de base de datos”

Menú Datos –> Agregar nuevo origen de datos

a1

a2

a3

a4

a5

a6

En esta parte, el asiste nos pregunta el nombre que asignaremos a la cadena de conexión, podemos dejar el nombre por default o poner el nombre que creamos conveniente, en esta ocasión dejemos el que nos pone por default mas adelante lo modificaremos:

a7

a8

Después de realizar todo lo anterior podrá ver en el “Explorador de soluciones” dos nuevos archivos, que son el archivo de configuración y un DataSet:

a9

El archivo DataSet por favor elimínelo, ya que no nos servirá de nada…

Si abre el archivo de configuración que acabamos de agregar a nuestro proyecto, podrá ver dentro una estructura de código Xml como el siguiente:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="connectionString_CSharp.Properties.Settings.DirectorioConnectionString"
             connectionString="Data Source=LUISESCOBAR-PC;Initial Catalog=Directorio;Integrated Security=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>

Veamos que representa cada línea:

Esta línea representa el nombre de nuestra cadena de conexión, si recuerda en uno de los pasos anteriores el asistente le preguntaba el nombre de la cadena de conexión, como dejamos el nombre por default es este el que aparece como nombre de nuestra cadena:

<add name="connectionString_CSharp.Properties.Settings.DirectorioConnectionString"

Modifiquemos esta línea con el fin de tener un nombre mas corto (con este nombre será como obtendremos el valor de nuestra Cadena):

<add name="cnxString"

La siguiente línea representa el valor de nuestra cadena de conexión:


connectionString="Data Source=LUISESCOBAR-PC;Initial Catalog=Directorio;Integrated Security=True"

y por ultimo tendremos el nombre del motor de Base de Datos que estaremos usando:
providerName="System.Data.SqlClient" />

Bien, ya vimos como usar el asistente para definir una cadena de conexión…ahora vayamos a ver

Insertar un nuevo elemento al proyecto del tipo App.Config

Haga Click derecho sobre el proyecto –> Agregar –> Nuevo Elemento:

a10

Seleccione “Archivo de configuración de aplicaciones”, deje el nombre por default y presione el botón “Aceptar”

a11

Observe que tenemos un nuevo archivo en el “Explorador de soluciones” ábralo dentro podrá ver una estructura de código como la siguiente:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
</configuration>

Dentro de la etiqueta <configuration> usted tendrá que agregar el nombre de la cadena de conexión, el valor de la cadena de conexión y el nombre del motor de Base de datos que estará utilizando, esto ultimo no siempre es necesario ya que depende mucho del motor que estemos utilizando porque para Bases de datos como Access, SqlCe…son necesarios para SqlServer no lo es.

Al final usted deberá de tener un archivo con la siguiente estructura de código Xml:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="cnxString"
         connectionString="Data Source=LUISESCOBAR-PC;Initial Catalog=Directorio;Integrated Security=True"
         providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

Utilizar el archivo de configuración para obtener la cadena de conexión

Ahora veamos como utilizar la cadena de conexión que acabamos de crear por cualquiera de los pasos anteriores.

Antes de poder utilizar el valor de cadena de conexión almacenada en la etiqueta connectionString de nuestro archivo de configuración, debe de agregar una referencia al ensamblado System.Configuration para esto:

Haga click derecho sobre el proyecto –> Agregar referencia –> Ficha .Net –> seleccione System.Configuration –> Aceptar

a12

Una vez echo esto, vayamos a la clase donde queramos abrir la conexión e importemos el espacio de nombres System.Configuration, echo lo anterior estamos listos para utilizar nuestro App.Config.

para C#:

using System;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Configuration;

namespace connectionString_CSharp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnconectar_Click(object sender, EventArgs e)
        {
            TestConnection();
        }

        private void TestConnection()
        {
            using(SqlConnection cnx = new SqlConnection(ConfigurationManager.ConnectionStrings["cnxString"].ToString()))
            {
                cnx.Open();

                MessageBox.Show(cnx.State.ToString());
            }
        }
    }
}

Para Vb.Net:

Imports System.Data.SqlClient
Imports System.Configuration
Public Class Form1

    Private Sub btnProbar_Click(sender As System.Object, e As System.EventArgs) Handles btnProbar.Click
        TestConnection()
    End Sub

    Private Sub TestConnection()
        Using cnx As New SqlConnection(ConfigurationManager.ConnectionStrings("cnxString").ToString())
            cnx.Open()
            MessageBox.Show(cnx.State.ToString())
        End Using
    End Sub
End Class

Bien, cuando compile su proyecto, lo instale y se le presente la necesidad de modificar la cadena de conexión, simplemente diríjase al directorio de instalación ubique el archivo de configuración (una vez instalado su software la nomenclatura de su archivo será NombredelProyecto.Exe.Config), ábralo con el notepad, modifique su cadena, guarde los cambios y sin mas ni mas podrá seguir trabajando…

Saludos desde Monterrey, Nuevo León México!
Ejemplo C#
Ejemplo Vb.Net
Nota: El proyecto fue desarrollado en Vs2010 usando una Bd SqlServer 2008 Express y Framework 4.0 Client Profile


38 comentarios:

  1. en este link explican una forma sencilla de modificar el app.config en tiempo de ejecucion
    http://www.systemdeveloper.info/2014/04/how-to-modify-my-appexeconfig-keys-at.html

    ResponderEliminar
    Respuestas
    1. Hola:

      Gracias por visitar el blog y por aportar conocimiento con el link que nos compartes. Desde luego las claves del archivo de configuración son modificables en tiempo de ejecución...

      ¡Saludos desde Monterrey, Nuevo León, México!

      Eliminar
  2. José Luis, buenas tardes.
    Soy Gemma Campillo del foro Vb.Net.
    Felicidades por tu artículo. Tengo una pregunta ya que trabajo con Access 2007, La base de datos lleva contraseña y password y no se como ponerlo de forma que el usuario evidentemente no las vea.
    Un saludo.
    Gemnma

    ResponderEliminar
    Respuestas
    1. Hola Gema:
      Un gusto leerte por estos rumbos, gracias por las felicitaciones :-)

      Con respecto a lo que comentas creo que solo es Password o Contraseña en español :-)
      te comento que debes de establecerla dentro de la cadena de conexión para que tu aplicación pueda autenticarse de manera correcta a tu Bd sin importar que sea una Bd Access, Sql, SqlCe, MySql, etc...pero, para evitar que el usuario común vea estas credenciales debes de encriptar la sección "", esto podrías realizarlo desde que tu aplicación corra...tengo la codificación en C# para hacer esto, si aun no logras resolverlo pasame tu correo por medio del formulario de contacto y con gusto te comparto el proyecto...y si batallas pues podemos tener una sesión por Skype para apoyarte...

      ¡Saludos desde Monterrey, Nuevo León, México!

      Eliminar
    2. Hola querido Luis:
      He estado fuera trabajando y no he podido responderte. Discúlpame por favor por la tardanza. Ya lo tengo solucionado con lo que me has comentado. Ahora lo que voy a hacer es trabajar para pasar de Access 2007 a una base de sqlcompact. Ya me he estado mirando tu blog y es muy bueno.
      Ya nos iremos hablando. Un fuerte abrazo.
      Gemma

      Eliminar
    3. Hola Gemma:

      Gracias de nuevo por tus comentarios, de hoy en el foro de Vb.Net te iba a preguntar que paso con tu problema pero, veo gustoso que ya lo resolviste.

      Y en relación a tu BD es lo mejor que podrás hacer, migrar a SQLCE; Access es muy bueno pero SqlCe es mas potente y cuenta con mejores capacidades de procesamiento, ademas de que puedes manejarlo con el SqlManagementStudio tal cual como lo haces con SqlServer, tiene sus limitantes en relación a la versión express por lo compacto pero cuando decidas migrar a un servidor la migración sera pan comido...

      Bueno nos escribimos pronto!

      ¡Saludos desde Monterrey, Nuevo León, México!

      Eliminar
  3. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  4. Hola Luis, muchas gracias por publicar este tipo de contenidos que nos ayudan mucho a los que estamos aprendiendo a programar. Tengo una duda, ya estoy aplicando los archivos de configuracion en mis proyectos ya sean de escritorio o web, pero que debería de hacer cuando me cambio de Pc ya sea cuando estoy en la fase de desarrollo o estoy instalando la aplicacion ya concluida. Me habian recomendado usar comodines en la parte del nombre del servidor pero no sé cual es la manera más correcta.
    Nota: Estoy usando Sql server 2008 y Visual Studio 2010

    ResponderEliminar
    Respuestas
    1. Hola:
      Gracias por tu comentarios, no entiendo cual es tu duda, ¿Qué deberías de hacer? mi pregunta es ¿con respecto a que?, los comodines como para que...si me regalas una mejor explicación probablemente pueda aportar alguna idea...

      ¡Saludos desde Monterrey, Nuevo León, México!

      Eliminar
    2. Este comentario ha sido eliminado por el autor.

      Eliminar
    3. Gracias por contestar Luis, yo defino mi cadena de conexion en el archivo app config (aplicación de escritorio) tal como muestras en este articulo. Pero cuando me cambio de maquina tengo que cambiar el Data source por el de la máquina. En internet busque que para evitar esto tengo que usar un comodin, que en este caso es un punto (.) en donde va el nombre del servidor, pero tomando en cuenta que solo sirve con servidores con nombres de instancia y no con los sqlexpress. Mi duda es: ¿el uso del punto es la manera más correcta?

      Eliminar
    4. Manuel:

      Esto que comentas no he tenido la oportunidad de verlo, a mi siempre me a funcionando las cadenas de conexion tal cual como se muestra en el articulo, así sea con nombres de servidores o con el Sqlserver express. Si pudieras poner un ejemplo de lo que estas experimentando igual y aprendemos algo nuevo todos o entre todos vemos como solucionar tu caso...

      ¡Saludos desde Monterrey, Nuevo León, México!

      Eliminar
    5. Hola luis, a lo que me refiero es que cuando declaro mi cadena de conexión en el archivo de configuración (Appconfig o webconfig) para evitar cambiar el nombre en el Data source, por ejemplo "Data source=Luis;" por el de la otra maquina "Data source=otrapc;" uso un comodin de la siguiente manera "Data source= .;" . Pero en este caso solo me va a aceptar las instancias con nombre por ejemplo: luis-pc o manuel-pc. Por el contrario no me va aceptar una instancia predetermina como pc/sqlexpress y para esto tengo que usar otro comodín por ejemplo: "Data source=./sqlexpress".

      Eliminar
  5. Lo q esta colocado no esta mal, pero en ocasiones suele dar error, a mi me genero error pero lo solucione con siguiente:

    ConfigurationManager.AppSettings["KEY"];
    ó Tambien.
    ConfigurationManager.AppSettings.Get("KEY");

    Ojo no estoy diciendo q esta mal lo que han escrito.

    ResponderEliminar
    Respuestas
    1. Hola Juan:
      Mmmm seria bueno que comentaras cual fue el error que te arrojo y también como es que estas declarando la cadena de conexión, ya que en ningún proyecto me ha dado error...

      ¡Saludos desde Monterrey, Nuevo León, México!

      Eliminar
  6. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  7. Excelente articulo, muy concreto y especificando cada detalle acerca de la configuración!

    ResponderEliminar
    Respuestas
    1. Hola Christian:

      Gracias por tus comentarios. Es gratificante saber que el tiempo invertido le es útil a alguien mas.

      ¡Saludos desde Monterrey, Nuevo León, México!

      Eliminar
  8. buen dia me sale este error No se ha declarado el elemento 'configuration' alguna idea?

    ResponderEliminar
    Respuestas
    1. Hola Daniel:

      Creo que no has echo la referencia a la libreria System.Configuration, analiza bien el articulo sobre todo en la parte de la referencia:

      Haga click derecho sobre el proyecto –> Agregar referencia –> Ficha .Net –> seleccione System.Configuration –> Aceptar

      Eliminar
  9. ConfigurationManager.ConnectionStrings["cnxString"].ToString())
    Referencia a objeto no establecida como instancia de un objeto.

    ResponderEliminar
    Respuestas
    1. Hola:
      Asegúrate que el "cnxString" sea el nombre que le has puesto a la cadena de conexión dentro del App.Config...

      Saludos

      Eliminar
  10. Buenas noches José Luis, una pregunta:
    Leí lo que le respondiste a Gemma y tengo una duda parecida ¿La solución que tu implementas sirve en todo momento? Osea imagínate yo como usuario curioso voy a la carpeta donde se instaló el software, busco el App.config y como es simple texto plano lo abro con un editor de texto para ver su información (dependiente o independientemente si el sistema esté corriendo o no). Hago la pregunta porque estoy desarrollando un sistema en C# con windows forms y quiero que sea bastante seguro en ese aspecto. Gracias.

    ResponderEliminar
    Respuestas
    1. Hola Erick:
      Normalmente cuando se encripta una cadena de conexión se toman valores propias del equipo donde la aplicación se encuentre instalada, haciendo con esto muy difícil que alguien logre desencriptar tu cadena.

      Por el tema de que tu aplicación esta o no esta corriendo no debes de preocuparte puesto que desde la primera que corres tu aplicación la lógica del software debe ser capaz de validar si la cadena de conexión esta encriptada, si no lo esta entonces la encripta pero si ya esta entonces no pasa nada, cuando cierras la aplicación la cadena de conexión queda completamente encriptada, si alguien quisiera entrar a modificar su valor usando cualquier editor de texto, simplemente se toparía con valores poco reconocibles y al modificarla es mas que lógico que la aplicación dejara de trabajar correctamente.

      Un ejemplo de una cadena de conexión encriptada es el siguiente:




      AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAA5YJrgz68m06uFiC9i74yQwQAAAACAAAAAAAQZgAAAAEAACAAAACixZKQ/etAREm3jE2b64FGJSO2CUH+GuOzhw5cwegtNQAAAAAOgAAAAAIAACAAAADn19O9S3qGkWE6ZVz6k86Sr08H8LhAkZiyq7IfGiuGEhACAAD4gji8QVlKj2hiSCE13Bzxnw3s0C7RVp9DQBfqEhC1+2v9utMU76w8WHamnoSrrbKCdcjplPdOCI4ab3Au3ENkuq6KYy/yPzYYDP444ceB9EB4SM33dBVVsp/U/24ZVN8PR0GiB4/1zA5bLAijIuIjnOSSk7RZ2+wqHiWwILTYaXlWz2m6vR+NSwvhi23UnyFsvWjQL+lRgzYqnwCf+eBslcA7cJYxHfJpATzx+hY9GZRC5wCYFWPyNxoU2TxEaBcPsV/NEL0IE6PxTYoEopgkVejgPtaZQOcz56swXLr6HKlCeJD1yxrQuQcaTRQ9G5Bbe5yNvSssrXNWK2lFneqlb0Mv2OXg2HQc9SYQspWXS7aeiX7gs78jy/GLnaTbBQ0646VHDCXGzySCGofutbEt/XM9JROBw5GEEoRH9rsX9Zcn0BSnQ7namH76D8b8VE+X3r/Es8JeKvCOEhkLaG+WvM79N3FuZCBAHtykdy97kfL7ynGri7uySMCq4AwY2mgtIuqChpf4g7Z9L0ypHK2NlpqB3z8RWLyq6nCGmvjmSQwpCP2qXynAWMKyyhqBrfKKQQ3jXSyagQGpzM9y3kTnmknYQY9fA9TcykajFBxkfDvBdn6KBZRULZ8EQr0bm86mcdj4YPK8BdjZzJvnRJAkq8UsAzFW2VaRD2fO7Mnnz+1gjfCDgmxhzLD8g4X+S6FAAAAA5yCWqi85OMyaQwaoo/Nomui7FI893DPKqphAqW7G5bf9rhTVBOkNHQXCqeAbUC/2RsmbcfS2QsOrbMFxag8ZPA==




      Como podrás darte cuenta, la la sección queda completamente protegida y como dije hace un rato, si alguien intenta modificar los valores o desencriptar este archivo desde otro equipo, jamas lo lograra puesto que se requieren valores que solo posee el equipo, valores que ni tu mismo como desarrollador sabrás.

      Espero haber aclarado un poco mas tus dudas, si el blog es de tu agrado no dudes en suscribirte y compartir los artículos que te parezcan interesante, la idea es ir creciendo la comunidad.

      Eliminar
  11. Hola excelente post, pero tengo una duda algo diferente pero que tiene que ver mucho con los app.config; tengo varios servicios de windows que se conectan a una base de datos en SLQ Server, cada servicio tiene su respectivo app.config con la connection string y hasta ahi todo funciona perfecto, mi duda es ya que la base de datos es la misma y los servicios se encuentran en la misma ruta, es posible que estos se conecten a un solo app.config ? me refiero a que en lugar de que yo tenga muchos archivos de configuracion (Servicio1.exe.config, Servicio2.exe.config, ServicioX.exe.config.... ) tuviera solo uno para todos los servicios, pues cuando tenemos que migrar base de datos, es tedioso andas modificando archivo por archivo, es posible hacer esto?

    ResponderEliminar
  12. app.config solo se usa con sql? se puede hacer que haga lo mismo pero sin base de datos? y que se maneje el archivo sin problemas como en tus ejemplos?

    ResponderEliminar
    Respuestas
    1. Hola Luis Erickson:

      Las cadenas de conexion con para almacenar los valores de conexion para cualquier tipo de base de datos, SQl, ORACLE, ACCESS, SQLCE, TERADATA, etc. y ademas en el podrás guardar cualquier configuración propia de tu aplicación... si necesitas mayor detalle no dudes en escribirme en este articulo o enviarme un correo.

      Saludos

      Eliminar
  13. Hola,, José muy bueno tu blogs... Estoy empezando en la programación y quisiera que me ayudaras con algo, quiero realizar un archivo. Config o un xml de la Creación de una base de datos de sql server... Con el fin de que mi proyecto o aplicación genere automáticamente x base de datos. No se si soy explícito. Tw lo explico con un ejemplo. Mi programa funciona correctamente wn mi pc por que cree la base de datos pero al ir a otro computador no me va a servir por q no está la base de datos, entonces me tocaría hacerla de nuevo, esto no sería problema si fuera para mi pero la idea es que pueda usarlo cualquier persona.
    Que cuando yo instale mi aplicación en cualquier pc también automáticamente se cree la base de datos. Agradecería tu comentario al respecto

    ResponderEliminar
    Respuestas
    1. Hola.

      Seria bueno que comentaras que tipo de base de motor de base de datos estas usando, por ejemplo, si es SQL Server, Oracle, MySql, etc.

      También revisa si es necesario usar un motor de base de datos o basta con un simple archivo portable como SqlLite, Access o el mismo SqlCompact (para mi la mejor bd portable para .Net).

      Eliminar
  14. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  15. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  16. Hola Jose
    Excelente tutorial simple pero contundente.
    quisiera que por favor me ayudaras con una consulta que tengo.
    ya tengo terminada una aplicación winforms para una tienda de ropa deportiva ahora estoy perfeccionando la interfaz de usuario y quisiera que el cliente tuviera algo mas de control sobre ella, para eso quisiera crear un apartado configuración donde pueda seleccionar el color de la interfaz tamaño de los controles tipo de fuente y demás ajustes, en algún momento de mi aprendizaje puede hacer estos cambios con bastante facilidad pero obviamente al cerrar la aplicación no se guardaban esos cambios.

    mi pregunta es ¿como hago para que se guarden los cambios, que al cerrar la aplicación y volverla a abrir queden como previamente lo dejo el usuario?, espero no se salga un poco del hilo de esta conversación

    gracias de antemano por tu respuesta y buena tarde

    ResponderEliminar
  17. José Luis, como estás, soy Gemma.
    Por casualidad no sabrás como insertar una conexión desde el código, es decir, compruebo que el usuario tiene o no una determinada cadena de conexión y si no la tiene, que se la pueda incorporar por código y que el mismo se copie en el connectionstrings, eso es porque tengo una aplicaci´ñon distribuida con Access y empleando ahora la factoría de proveedores me gustaría poder añadirle en su App.Config las conexiones de sqlcompact y sqlServerExpress y solo me falta como guardar esa conexión que la tengo por código, poder guardarla en el App.Config.
    Bueno querido amigo un fuerte abrazo.
    Gemma

    ResponderEliminar
    Respuestas
    1. Hola Gamma: Un gusto leerte nuevamente, por favor envíame tu dirección de email por medio del formulario de contacto y con gusto te hago llegar un ejemplo sobre como editar el archivo de configuraciones desde un formulario... Saludos

      Eliminar
    2. Hola José Luis:
      Muchas gracias querido amigo, pero realmente editarlo ya lo sé, lo que me falta es poder añadir una/s conexiones desde código si no existen ya que la tengo en algunos clientes solo con la conexión de Access y claro, ahora ya trabajo totalmente con compact y sqlexpress y no encuentro la forma de añadir esas conexiones al app.config desde código.
      Bueno, mi correo es: gemma@managerialanalyzer.com
      Un fuerte abrazo querido amigo.
      Gemma

      Eliminar
  18. Genial! bien explicado y me salio al toque :) :)

    ResponderEliminar
  19. Muy buena explicacion, pero agradeceria darnos unos ejemplos de como encriptar la cadena de conexion, es decir desde donde encripto?, o solo debo encriptar el archivo de configuracion?, agradeceria tu valiosa opinion.

    Un abrazo desde Lima Peru
    Rolando

    ResponderEliminar

Deja un comentario si el articulo fue de utilidad.