none
Conexion a distinas Bases de Datos RRS feed

  • Pregunta

  • Hola que tal, buen dia comunidad, me surgio la siguiente duda.

    Necesito hacer distintas conexiones en una misma pagina, pero pienso elegir la Base de Datos mediante una lista, alguien podria darme una idea de como implementarlo

    viernes, 13 de noviembre de 2015 15:36

Respuestas

  • En tu diseño, en la  lista pones tus cadenas de Conexión, ejemplo:

    <asp:DropDownList ID="ddlOrigen" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlOrigen_SelectedIndexChanged">
                        <asp:ListItem Value="Server=*.*.*.1; Database=BD1; user id = sa; password = *****">Primera BD</asp:ListItem>
                        <asp:ListItem Value="Server=*.*.*.2; Database=BD2; user id = sa; password = *****">Segunda BD</asp:ListItem>
                        <asp:ListItem Value="Server=*.*.*.3; Database=BD3; user id = sa; password = *****">Tercera BD</asp:ListItem>
                        <asp:ListItem Value="Server=*.*.*.4; Database=BD4; user id = sa; password = *****">Cuarta BD</asp:ListItem>
                    </asp:DropDownList>

    Y a la hora de hacer tu conexión en el código C#, pondrías algo como:

                SqlConnection conBDI = new SqlConnection(ddlOrigen.SelectedItem.Value);
                DataTable tablaBDI = new DataTable();
                string sqlBDI = "Select * from ....";
                SqlDataAdapter adapterBDI = new SqlDataAdapter(sqlBDI, conBDI);
                adapterBDI.Fill(tablaBDI);
                GridView1.DataSource = tablaBDI;
                GridView1.DataBind();

    Espero te srica, saludos.


    Roy Sillerico


    viernes, 13 de noviembre de 2015 15:48

Todas las respuestas

  • hola

    que tan dinamicas van a ser las conexiones? o sea debes definir el connection string en una tabla y listarlo al usuario (quizas en un combo)

    o podrias definirlas en el web.config y tomarlas de alli para listar

    entiendo que el nombre que le asignes seria el DataTextField y el connection string podria ser el DataValueField

    entonces en el SelectedValue tendrias el connection string para trabjar con esa db seleccionada

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 13 de noviembre de 2015 15:48
  • En tu diseño, en la  lista pones tus cadenas de Conexión, ejemplo:

    <asp:DropDownList ID="ddlOrigen" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlOrigen_SelectedIndexChanged">
                        <asp:ListItem Value="Server=*.*.*.1; Database=BD1; user id = sa; password = *****">Primera BD</asp:ListItem>
                        <asp:ListItem Value="Server=*.*.*.2; Database=BD2; user id = sa; password = *****">Segunda BD</asp:ListItem>
                        <asp:ListItem Value="Server=*.*.*.3; Database=BD3; user id = sa; password = *****">Tercera BD</asp:ListItem>
                        <asp:ListItem Value="Server=*.*.*.4; Database=BD4; user id = sa; password = *****">Cuarta BD</asp:ListItem>
                    </asp:DropDownList>

    Y a la hora de hacer tu conexión en el código C#, pondrías algo como:

                SqlConnection conBDI = new SqlConnection(ddlOrigen.SelectedItem.Value);
                DataTable tablaBDI = new DataTable();
                string sqlBDI = "Select * from ....";
                SqlDataAdapter adapterBDI = new SqlDataAdapter(sqlBDI, conBDI);
                adapterBDI.Fill(tablaBDI);
                GridView1.DataSource = tablaBDI;
                GridView1.DataBind();

    Espero te srica, saludos.


    Roy Sillerico


    viernes, 13 de noviembre de 2015 15:48
  • Tengo las conexiones definidas en el web.config , intentare de las dos maneras , dejarlas ahi o definirlas directamente en el DropDownList, GRACIAS
    viernes, 13 de noviembre de 2015 15:56
  • >>dejarlas ahi o definirlas directamente en el DropDownList

    si tienes los connection string en el config entonces tomalo de alli

    puedes usar el

        foreach (ConnectionStringSettings c in ConfigurationManager.ConnectionStrings)
        {
            //agregas el item al combo
        }

    recuerda definir elusing System.Configuration

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    viernes, 13 de noviembre de 2015 16:04
  • Y en VB.NET como seria
    viernes, 13 de noviembre de 2015 16:17
  • te refieres al foreach ?

        For Each c As ConnectionStringSettings In ConfigurationManager.ConnectionStrings
        
            'agregas el item al combo
        Next


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 13 de noviembre de 2015 16:25
  • Es correcto lo siguiente:

    Try
                For Each c As ConnectionStringSettings In ConfigurationManager.ConnectionStrings
                    DropDownList1.Items.Add("conexion512")
                    DropDownList1.Items.Add("conexion517")
                Next
                Dim queryString As String = "SELECT tVentaDetalle.art_Clave as 'SKU', tVentaDetalle.art_Nombre as 'ARTICULO', vdet_Cantidad as 'CANTIDAD', vdet_Importe as 'IMPORTE', vdet_Total as 'TOTAL', vdet_Fecha as 'FECHA' FROM tVentaDetalle INNER JOIN tArticulo ON tVentaDetalle.art_Clave=tArticulo.art_Clave WHERE tart_Clave=@sector AND (vdet_Fecha BETWEEN @fechai AND @fechaf) AND (eventa_Clave='RESURTIDO')"
                Using connection As New SqlConnection(c)
                    Dim comando As New SqlCommand(queryString, connection)
                    comando.Parameters.AddWithValue("sector", DropDownList1.SelectedValue)
                    comando.Parameters.AddWithValue("fechai", CDate(TextBox1.Text))
                    comando.Parameters.AddWithValue("fechaf", CDate(TextBox2.Text))
    
                    adaptador = New SqlDataAdapter(comando)
                    Dim datos As New DataTable
                    adaptador.Fill(datos)
    
                    tablav.DataSource = datos
                    tablav.DataBind()
                End Using
            Catch ex As Exception
                Response.Write(String.Format("<script>alert('{0}')</script>", ex.Message))
            End Try


    • Editado Gspindola viernes, 13 de noviembre de 2015 16:46 Mas detallado
    viernes, 13 de noviembre de 2015 16:41
  • No me muestra ningún resultado, al parecer si estoy equivocado, podrían ayudarme ?
    viernes, 13 de noviembre de 2015 17:38