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 originalpublic DataTable filtroCerradasTodasUsuario(AccIncidencias inc)
{
///Se abre la conexión con bd y se dice que proc. almacenado usar
string rpta = "Error en la carga";
SqlConnection cn = new SqlConnection();
SqlCommand cmd = new SqlCommand();
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
try
{
///Se abre la conexión con bd y se dice que proc. almacenado usar
cn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
cn.Open();
cmd.Connection = cn;
cmd.CommandText = "filtroCerradasTodasUsuario";
cmd.CommandType = CommandType.StoredProcedure;
///Se definen los parámetros y tipos de datos del proc.
SqlParameter pmNombreUsuario = new SqlParameter();
pmNombreUsuario.ParameterName = "@NombreUsuario";
pmNombreUsuario.SqlDbType = SqlDbType.NVarChar;
pmNombreUsuario.Size = 256;
pmNombreUsuario.Value = inc.NombreUsuario;
cmd.Parameters.Add(pmNombreUsuario);
///Se llena el DtaTable
da.Fill(dt);
//Se cierra la conexión
cn.Close();
}
catch (Exception ex)
{
rpta = ex.Message;
}
return dt;
}
- 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 originalpublic static DataTable filtroCerradasTodasUsuario(string NombreUsuario)
{
AccIncidencias inc = new AccIncidencias();
inc.NombreUsuario = NombreUsuario;
return inc.filtroCerradasTodasUsuario(inc);
}
- 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<connectionStrings>
<add name="ConnectionString"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\SECURITYDB.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
</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 originalprotected void ddMarca_SelectedIndexChanged(object sender, EventArgs e)
{
if (ddMarca.SelectedValue == "Mostrar Todas")
{
grdIncAb.DataSource = NegIncidencias.filtroCerradasTodasUsuario(this.User.Identity.Name);
grdIncAb.DataBind();
}
else
{
grdIncAb.DataSource = NegIncidencias.filtroCerradasEquipoUsuario(this.User.Identity.Name, ddMarca.SelectedItem.Text);
grdIncAb.DataBind();
}
}
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