2012-11-13 130 views
4

我已經建立2 DROPDOWNLIST和1 GridView控件asp.net下拉列表和GridView

1下拉列表加載和顯示數據庫名稱動態

第二下拉列表加載和顯示表名,基於數據庫名稱哪家在下拉列表

1滴基於表名的數據選擇,必須顯示在GridView中........

我已經寫代碼,顯示數據庫名稱和做工精細

private void populateDatabasename() { 

     SqlConnection con = new SqlConnection(@"Data Source=SAI-   PC\SQLEXPRESS;Integrated Security=True"); 
     con.Open(); 
     SqlDataAdapter da = new SqlDataAdapter("select name,collation_name from sys.databases order by name", con); 
     DataSet ds = new DataSet(); 
     da.Fill(ds, "dbname"); 
     DropDownList1.DataSource = ds.Tables["dbname"]; 
     DropDownList1.DataTextField = "name"; 
     DropDownList1.DataValueField = "name"; 
     DropDownList1.DataBind(); 
} 

基於數據庫名稱表已被顯示.....如何通過在數據庫名稱(這是第一個下拉菜單中選擇)下面的代碼..... 這是一個正確的方式來傳遞數據庫名稱

private void populateTableName() {     

     SqlConnection con = new SqlConnection(@"Data Source=SAI-PC\SQLEXPRESS;Integrated Security=True"); 
     con.Open(); 
     SqlDataAdapter da = new SqlDataAdapter("select name from "+"@Dbname"+".sys.tables", con); 

     da.SelectCommand.Parameters.Add("@dbname", SqlDbType.VarChar); 
     da.SelectCommand.Parameters["@dbname"].Value = DropDownList1.SelectedValue; 
     DataSet ds = new DataSet(); 
     da.Fill(ds, "dbname1"); 
     DropDownList2.DataSource = ds.Tables["dbname1"]; 
     DropDownList2.DataTextField = "name"; 
     DropDownList2.DataValueField = "name"; 
     DropDownList2.DataBind(); 
} 
+0

這可能是偶然,而是在'SqlDataAdapter'你使用'@ Dbname'資本d,當你指定的參數你使用帶有小d的'@ dbname'。不知道是否區分大小寫。 –

+0

謝謝羅賓.... – arun369

+0

謝謝.......我得到了答案............................ ....... cmd.CommandText =「從」+ drddatabase.SelectedValue +「選擇名稱作爲TableName。」 +「sys」+「。」 +「表 – arun369

回答

0

我不知道如果需要與否,但你應該給在連接字符串中的數據庫名稱。 Database=Northwind;在這種情況下,使用System.Data.SqlClient.SqlConnectionStringBuilder類甚至更好。然後,如果用戶擁有正確的權限,則可以查詢表名稱。

+0

謝謝.......我得到了答案................................. .. cmd.CommandText =「從」+ drddatabase.SelectedValue +「。」+「sys」+「。」+「tables」中選擇名稱作爲TableName。 – arun369

0

我想你應該包括在連接字符串數據庫名稱您用來填充表

使用這樣的事情

的SqlConnection CON =新的SqlConnection(@「數據源= SAI-PC \ SQLEXPRESS;數據庫=「+ Dropdownlist1.selecteditem.text +」; Integrated Security = True「);

閱讀該表,並繼續

0

試試這個:

 string dbName = ddlDbName.SelectedValue; 
     string strcon = "server=SAI-PC\\SQLEXPRESS;database= " + dbName + ";providerName=\"System.Data.SqlClient\""; 
     SqlConnection con = new SqlConnection(strcon); 
     con.Open();