Ver Mensaje Individual
  #8 (permalink)  
Antiguo 20/02/2014, 02:30
thanos
 
Fecha de Ingreso: octubre-2012
Ubicación: España
Mensajes: 30
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: No logro conectar mi proyecto a la base de datos!

Buenas, yo tampoco es que sea un lumbreras en estas lides pero a ver si te pudiera aclarar algo. Cuando haces la aplicación lo suyo es que la cadena de conexión esté definida exclusivamente en el web.config y la aplicación estructurada en capas para separar la lógica del negocio de lo que sería la presentación al usuario y con esa línea lo que haces es decirle al método que cadena de conexión es la que tiene usar. Entonces dentro de tu solución tendrías varios proyectos o capas:
- Una biblioteca de clases con tus entidades
- Una biblioteca de clases para el acceso a datos que es la que va a conectarse a la bd para realizar los select y demás gestiones. Aquí es donde debes agregar la referencia a System.Configuration. Te pongo un ejemplo que usa un procedimiento almacenado dentro de una clase que llamé AccIncidencias:
Código XML:
Ver original
  1. public DataTable filtroCerradasTodasUsuario(AccIncidencias inc)
  2.         {
  3.             ///Se abre la conexión con bd y se dice que proc. almacenado usar
  4.             string rpta = "Error en la carga";
  5.             SqlConnection cn = new SqlConnection();
  6.             SqlCommand cmd = new SqlCommand();
  7.             SqlDataAdapter da = new SqlDataAdapter(cmd);
  8.             DataTable dt = new DataTable();
  9.             try
  10.             {
  11.                 ///Se abre la conexión con bd y se dice que proc. almacenado usar
  12.                 cn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
  13.                 cn.Open();
  14.                 cmd.Connection = cn;
  15.                 cmd.CommandText = "filtroCerradasTodasUsuario";
  16.                 cmd.CommandType = CommandType.StoredProcedure;
  17.  
  18.                 ///Se definen los parámetros y tipos de datos del proc.
  19.                 SqlParameter pmNombreUsuario = new SqlParameter();
  20.                 pmNombreUsuario.ParameterName = "@NombreUsuario";
  21.                 pmNombreUsuario.SqlDbType = SqlDbType.NVarChar;
  22.                 pmNombreUsuario.Size = 256;
  23.                 pmNombreUsuario.Value = inc.NombreUsuario;
  24.                 cmd.Parameters.Add(pmNombreUsuario);
  25.  
  26.                 ///Se llena el DtaTable
  27.                 da.Fill(dt);
  28.                 //Se cierra la conexión
  29.                 cn.Close();
  30.             }
  31.             catch (Exception ex)
  32.             {
  33.                 rpta = ex.Message;
  34.             }
  35.             return dt;
  36.         }
- Otra biblioteca de clases que va hacer de intermediaria entre la presentación a usuario y el acceso a datos que siguiendo con el ejemplo en este caso tengo una clase llamada NegIncidencias que llama al método definido en el acceso a datos:
Código XML:
Ver original
  1. public static DataTable filtroCerradasTodasUsuario(string NombreUsuario)
  2.         {
  3.             AccIncidencias inc = new AccIncidencias();
  4.             inc.NombreUsuario = NombreUsuario;
  5.  
  6.             return inc.filtroCerradasTodasUsuario(inc);
  7.         }
- Y por último tendrías el proyecto web con tus formularios y el web.config.
Al proyecto web le agregas referencias a las entidades y a la capa intermedia.
A la capa intermedia e agregas referencias a las entidades y al acceso a datos.
Al acceso a datos le agregas referencias a entidades y a System.Configuration.
De esta forma desde el formulario llamas al método de la capa intermedia y este al del acceso a datos. En el web.config la cadena de conexión la tengo así:
Código XML:
Ver original
  1. <connectionStrings>
  2.     <add name="ConnectionString"
  3.         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\SECURITYDB.mdf;User Instance=true"
  4.         providerName="System.Data.SqlClient" />
  5.   </connectionStrings>
Y en el formulario tengo un combobox que según lo que se selecciona usa el método que te he puesto u otro y lo muestra en un grid:
Código XML:
Ver original
  1. protected void ddMarca_SelectedIndexChanged(object sender, EventArgs e)
  2.         {
  3.             if (ddMarca.SelectedValue == "Mostrar Todas")
  4.             {
  5.                 grdIncAb.DataSource = NegIncidencias.filtroCerradasTodasUsuario(this.User.Identity.Name);
  6.                 grdIncAb.DataBind();
  7.             }
  8.             else
  9.             {
  10.                 grdIncAb.DataSource = NegIncidencias.filtroCerradasEquipoUsuario(this.User.Identity.Name, ddMarca.SelectedItem.Text);
  11.                 grdIncAb.DataBind();
  12.             }
  13.         }

Espero no haberte liado más todavía, ya te digo que yo soy aficionado no profesional y si quieres y se puede te paso el código de esta aplicación que hice que es bastante cutre y no creo que te cueste enterdelo viéndolo. Un saludo