0

我有显示位置名称的下拉菜单,下拉菜单的数据源同时显示 LOC_NM 和 LOC_ID,但用户只会看到位置名称。所以我想做的是在我的选择查询中传递 LOC_ID,我该怎么做?这是下拉菜单的代码:

<asp:DropDownList ID="locatioin"  DataSourceID="dd_source" DataTextField="LOC_NM" DataValueField="LOC_ID" runat="server" AppendDataBoundItems="true">
<asp:ListItem Text="Select Location" Value="Select Location"></asp:ListItem>
</asp:DropDownList>

这是我的选择语句背后的代码:

 SqlDataAdapter da = new SqlDataAdapter("select Company, Location from MainTable
    where Location = selected LOC_ID")

如您所见,我想在查询中传递所选值的 LOC ID,但我遇到了问题: where Location = selected LOC_ID

4

3 回答 3

6

这是快速解决方案:

var tmp = "SELECT Company, Location FROM MainTable WHERE LocationColumn = {0}");
var query = string.Format(tmp,location.SelectedValue);
SqlDataAdapter da = new SqlDataAdapter(query);

这是安全的解决方案:

SqlConnection conn = new SqlConnection(_connectionString);
conn.Open();
string s = "SELECT Company, Location " + 
           "FROM MainTable " +
           "WHERE LocationColumn = @location";
SqlCommand cmd = new SqlCommand(s);
cmd.Parameters.Add("@location", location.SelectedValue);
SqlDataReader reader = cmd.ExecuteReader();

归功于最好的编码网站之一:编码恐怖:给我参数化的 SQL,或者给我死亡

于 2013-10-28T17:54:44.790 回答
3

moe:我希望您不要像您发布的示例中那样连接 SQL 字符串。这种连接受到 SQL 注入攻击。我建议使用参数化查询。

问候, 乌罗什

于 2013-10-28T17:51:27.613 回答
0

像这样

SqlDataAdapter da = new SqlDataAdapter("select Company, Location from MainTable
    where Location = "+locatioin.SelectedValue+"")

你只需要使用selected value下拉的属性。

尽管您还需要更正您的查询。

于 2013-10-28T17:46:42.997 回答