2016-04-11 1 views
0

Also, ich habe endlich den folgenden Code zu arbeiten. Basierend auf dem ausgewählten Wert der DDL wird eine andere Abfrage ausgeführt. Nicht sicher, ob es die beste Methode ist. Wie auch immer, wie gehe ich bei der Verwendung von Parametern direkt in der folgenden Abfrage vor?Parameter SQL Query Dropdownliste

Ich möchte parametrisierte Datenbankname und die Datenbank selbst. Vielen Dank.

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (DropDownList1.SelectedValue == "") 
    { 
     { 
      DataTable dt = new DataTable(); 
      GridView1.DataSource = dt; 
      GridView1.DataBind(); 
     } 
    } 
    if (DropDownList1.SelectedValue == "db1") 
    { 
     { 
      SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["db1ConnectionString"].ConnectionString); 
      SqlCommand cmd = new SqlCommand("select db1.dbo.table1.dbname where dbname = 'testdb1' ", con); 
      SqlDataAdapter Adpt = new SqlDataAdapter(cmd); 
      DataTable dt = new DataTable(); 
      Adpt.Fill(dt); 
      GridView1.DataSource = dt; 
      GridView1.DataBind(); 
     } 
    } 
    else if (DropDownList1.SelectedValue == "db2") 
    { 
     { 
      SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["db2ConnectionString"].ConnectionString); 
      SqlCommand cmd = new SqlCommand("select db2.dbo.table1.dbname where dbname = 'testdb2' ", con); 
      SqlDataAdapter Adpt = new SqlDataAdapter(cmd); 
      DataTable dt = new DataTable(); 
      Adpt.Fill(dt); 
      GridView1.DataSource = dt; 
      GridView1.DataBind(); 
     } 
    } 
} 
+0

Annonce die erste Zeile in Ihrem Fall setzen 'Datatable dt = new Datatable();' dann in Ihrem 'if {} else if()' fügen Sie einfach den folgenden 'dt = new Datatable (); 'und entfernen Sie das Erstellen einer neuen Instanz' DataTable dt = new DataTable(); 'auch wie werden die Daten anfänglich an GridView1 gebunden? Wenn das Dropdown-Feld leer ist .. und das GridView1 irgendwo anders gebunden wird, dann ändere die erste if-Anweisung in 'if (DropDownList1.SelectedValue == string.Empty) {return}' auch brauchst du nicht das zusätzliche '{ } innerhalb der if else-Klauseln – MethodMan

+0

Ich werde das Update auf Ihren Code auch nachschlagen, wie Sie Parameter verwenden, wenn Sie Ihre SQL Select Anweisungen tun. Suchen Sie nach dem genauen Text 'C# stackoverflow SqlCommand.Parameters.Add' oder' C# stackoverflow SqlCommand.Parameters.AddWIthValue' für gute Arbeitsbeispiele – MethodMan

+0

Danke für den Link und den Code zu beheben. Ich recherchiere mit Parametern und werde zurückschreiben, wenn ich Hilfe brauche. –

Antwort

-2
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    DataTable dt = new DataTable(); 
    SqlDataAdapter Adpt; 
    if(DropDownList1.SelectedValue == string.Empty) 
    { 
     //return; 
     //GridView1.DataSource = dt; 
     //GridView1.DataBind(); 
    } 
    if(DropDownList1.SelectedValue == "db1") 
    { 
     SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["db1ConnectionString"].ConnectionString); 
     SqlCommand cmd = new SqlCommand("select db1.dbo.table1.dbname where dbname = 'testdb1' ", con); 
     Adpt = new SqlDataAdapter(cmd); 
     new SqlDataAdapter(cmd).Fill(dt); 
    } 
    else if(DropDownList1.SelectedValue == "db2") 
    { 
     SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["db2ConnectionString"].ConnectionString); 
     SqlCommand cmd = new SqlCommand("select db2.dbo.table1.dbname where dbname = 'testdb2' ", con); 
     Adpt = new SqlDataAdapter(cmd); 
     new SqlDataAdapter(cmd).Fill(dt); 
    } 
    GridView1.DataSource = dt; 
    GridView1.DataBind(); 
} 
+0

1 weitere Frage, muss ich mir Sorgen über das Schließen der Verbindung machen? –

+0

Sie können den Code umstrukturieren, um ein 'using() {}' Konstrukt zu verwenden, das die automatische Entsorgung der Objekte behandelt, die mit 'new' erstellt wurden, sowie das Schließen der Verbindung – MethodMan

+1

' SqlConnection' implementiert 'IDisposable 'und Sie müssen Schritte unternehmen, um sicherzustellen, dass es entsorgt wird. Wickeln Sie es in eine using-Anweisung oder schließen Sie es in einem 'finally'-Block. – mason