2016-04-11 31 views
0

Sonunda çalışmak için aşağıdaki kodu aldım. DDL'nin seçilen değerine göre farklı bir sorgu çalıştırır. Değil, en iyi yöntem ise. Her neyse, doğrudan aşağıdaki sorguda parametreler kullanarak nasıl giderim?Parametreler SQL sorgu açılan listesi

Ben parametreli dbname ve veritabanı kendisi mümkün olmak istiyorum. Teşekkürler.

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

Etkinliğinizde bu reklamı ilk satırı koymak 'DataTable dt = new) (DataTable;' ardından senin '()' sadece aşağıdaki 'dt ekleyin else if} {if = new DataTable () '' ve bu yeni bir örneğin 'DataTable dt = new DataTable() oluşturulmasını kaldırır; 'ayrıca başlangıçta GridView1''e bağlanan veriler nasıldır ..? Açılan boşluk boşsa .. ve GridView1 başka bir yere bağlanıyorsa .. o zaman ilk if ifadesini 'e çeviriniz (DropDownList1.SelectedValue == string.Empty) {return}' Ayrıca ek 'liğe de ihtiyacınız yoktur. } – MethodMan

+0

cümleleri içeriyorsa, düzeltmeyi kodunuza gönderirim, Sql Select ifadelerinizi yaparken Parametrelerin nasıl kullanılacağını da ararım. Tam çalışma örnekleri için tam metni 'C# stackoverflow SqlCommand.Parameters.Add' veya' C# stackoverflow SqlCommand.Parameters.AddWIthValue' bir arama yapın – MethodMan

+0

Bağlantı ve kod düzeltme için teşekkürler. Parametreler kullanarak araştırma yapacağım ve yardıma ihtiyacım olursa geri göndereceğim. –

cevap

-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 soru daha, bağlantıyı kapatma konusunda endişelenmem gerekir mi? –

+0

kodunu kullanarak bir "using() {}' yapısını kullanabilirsiniz ve bu, "new" kullanılarak oluşturulan nesnelerin otomatik olarak yok edilmesini ve bağlantıyı kapatmanın üstesinden gelecektir. – MethodMan

+1

'SqlConnection '; ve atıldığından emin olmak için adımlar atmanız gerekir. Bir kullanma deyimine sarın veya bir 'son' bloğunda kapatın. – mason