4

2つのDropdownListと1つのGridViewを作成しました

1番目のDropdownListは、データベース名を動的にロードおよび表示ます

2番目のドロップダウンリストは、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();
}
4

3 に答える 3

0

必要かどうかはわかりませんが、接続文字列でデータベース名を指定する必要があります。Database=Northwind;この場合、System.Data.SqlClient.SqlConnectionStringBuilderクラスをさらにうまく使用します。そして、ユーザーが正しい権限を持っている場合は、テーブル名を照会できます。

于 2012-11-13T11:06:50.363 に答える
0

これを試して:

        string dbName = ddlDbName.SelectedValue;
        string strcon = "server=SAI-PC\\SQLEXPRESS;database= " + dbName + ";providerName=\"System.Data.SqlClient\"";
        SqlConnection con = new SqlConnection(strcon);
        con.Open();
于 2013-07-26T11:55:28.590 に答える
0

テーブルの入力に使用する接続文字列にデータベース名を含める必要があると思います

このようなものを使用してください

SqlConnection con = new SqlConnection(@"Data Source=SAI-PC\SQLEXPRESS;Database=" + Dropdownlist1.selecteditem.text + ";Integrated Security=True");

次に、表を読んで続行します

于 2012-11-13T11:53:21.037 に答える