我有这样的代码
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
string strConnectionString = ConfigurationManager.ConnectionStrings["SqlServerCstr"].ConnectionString;
SqlConnection myConnection = new SqlConnection(strConnectionString);
myConnection.Open();
string musisim = DropDownList1.SelectedItem.Value;
SqlCommand cmd = new SqlCommand("select B.HESAP_NO FROM YAZ..MARDATA.S_TEKLIF B WHERE B.MUS_K_ISIM = DropDownList1.SelectedItem.Value", myConnection);
Label1.Text = cmd.ExecuteReader().ToString();
myConnection.Close();
我的客户名称为“MUS_K_ISIM”,他的号码为“HESAP_NO”
我想要的只是,(autopostback是真的)自动获取标签“HESAP_NO”,其中包含在Dropdownlist中具有此号码“MUS_K_ISIM”的人。
我该怎么做?
错误:描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
答案 0 :(得分:4)
您的数据库对您的ASP页面或控件一无所知;-)因此您需要重新编写SQL语句 - 作为第一个修订版,您可以更改它:
SqlCommand cmd = new SqlCommand("select B.HESAP_NO FROM YAZ..MARDATA.S_TEKLIF B WHERE B.MUS_K_ISIM = '" + DropDownList1.SelectedItem.Value + "'", myConnection);
以便在下拉列表中选择的名称将添加到SQL查询中。
展望未来,最好使用Parameterized Query或Stored procedure进行此类操作。
HTH。
答案 1 :(得分:1)
您只需使用像这样的参数化查询
在查询表名YAZ..MARDATA.S_TEKLIF中可能还有一个拼写错误,它可能是'YAZ.MARDATA.S_TEKLIF'
更新了代码
string strConnectionString = ConfigurationManager.ConnectionStrings["SqlServerCstr"].ConnectionString;
using (SqlConnection myConnection = new SqlConnection(strConnectionString))
{
string query = "select B.HESAP_NO FROM YAZ.MARDATA.S_TEKLIF B WHERE B.MUS_K_ISIM = @selectedItem";
using (SqlCommand cmd = new SqlCommand(query, myConnection))
{
cmd.Parameters.AddWithValue("@selectedItem", DropDownList1.SelectedValue.ToString());
myConnection.Open();
using (SqlDataReader dr = cmd.ExecuteReader())
{
if (dr.HasRows)
{
Label1.Text = dr["B.HESAP_NO"].ToString();
}
dr.Close();
}
}
myConnection.Close();
}
答案 2 :(得分:0)
SqlCommand cmd = new SqlCommand("select B.HESAP_NO FROM YAZ..MARDATA.S_TEKLIF B WHERE B.MUS_K_ISIM = DropDownList1.SelectedItem.Value", myConnection);
你是否对文本进行了硬编码?,你需要传递我认为的选定值,
中的那个musisim
答案 3 :(得分:-1)
无需使用代码连接到DB。您可以使用一行代码完成所有这些操作。
添加一个SqlDataSource并使用您需要的SQL命令对其进行配置。
将DropDown连接到SqlDataSource,配置应该连接到文本字段的列以及应该连接到Value字段的列。
在你的函数DropDownList1_SelectedIndexChanged
中这样做:
Label1.Text = DropDownList1.SelectedValue();