0
protected void DropDownServerName_SelectedIndexChanged(object sender, EventArgs e)
{
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Database_Shared_NotebookConnectionString"].ConnectionString);

        conn.Open();

        string serverName = DropDownServerName.SelectedValue;

        string sqlquery = ("SELECT Architecture FROM tblServer WHERE (ServerName = " + serverName + ")");

        SqlCommand command = new SqlCommand(sqlquery, conn);

        txtUpdateArchitecture.Text = command.ExecuteScalar().ToString();

        conn.Close();
    }

DropDownServerName は、SqlDataSource を使用して SQL Server に接続され、ServerName 列に値のリストを表示します。

「Brad」という選択値を取得した後、Brad の Architecture 列の値をテキスト ボックスに表示します。ただし、無効な列名「Brad」というエラーが表示されました。列は ServerName であると想定され、Brad は ServerName 列の単なる値です。

4

4 に答える 4

3

サーバー名を引用符で囲む必要があります

string sqlquery = ("SELECT Architecture FROM tblServer WHERE (ServerName = '" + serverName + "')");

または、さらに良いのは、パラメータ化されたクエリを使用することです [クエリを汚染する可能性のある SQL インジェクションや文字列内の変な文字に対して安全です]

string sqlquery = "SELECT Architecture FROM tblServer WHERE ServerName = @ServerName";

SqlCommand command = new SqlCommand(sqlquery, conn);
command.Parameters.AddWithValue("@ServerName", serverName);
于 2012-10-11T18:59:19.157 に答える
0

WHERE 句の servername の前後に ' ' を追加します。

... WHERE ServerName = '" + serverName + "' ...
于 2012-10-11T18:59:33.193 に答える
0

代わりにこれを試してください。一重引用符で動作するはずです。

string sqlquery = ("SELECT Architecture FROM tblServer WHERE ServerName = '" + serverName + "'");
于 2012-10-11T18:59:59.377 に答える
0

変数を一重引用符で囲んでいない可能性があります。これを試して

    protected void DropDownServerName_SelectedIndexChanged(object sender, EventArgs e)
{
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Database_Shared_NotebookConnectionString"].ConnectionString);

        conn.Open();

        string serverName = DropDownServerName.SelectedValue;

        string sqlquery = ("SELECT Architecture FROM tblServer WHERE (ServerName = '" + serverName + "')");

        SqlCommand command = new SqlCommand(sqlquery, conn);

        txtUpdateArchitecture.Text = command.ExecuteScalar().ToString();

        conn.Close();
    }
于 2012-10-11T19:00:11.593 に答える