【发布时间】:2020-02-01 19:07:11
【问题描述】:
我试图根据 Personal_No 显示员工姓名,但在这样做时出现错误
变量名称“@Personnel_Number”已被声明。变量名称在查询批处理或存储过程中必须是唯一的
我的代码:
protected void txtEmployeeNumber_TextChanged(object sender, EventArgs e)
{
string EmployeeNo = "";
string constring = ConfigurationManager.ConnectionStrings["SQLDBConnection"].ConnectionString;
SqlConnection con = new SqlConnection(constring);
SqlCommand cmd = new SqlCommand("select Employee_Name from [138.201.225.134].[iProfile].[dbo].[tbl_Employee] WHERE Personnel_Number= @Personnel_Number", con);
cmd.CommandType = CommandType.Text;
foreach (GridViewRow row in grdRegister.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
EmployeeNo = (row.Cells[1].FindControl("txtEmployeeNumber") as TextBox).Text;
}
cmd.Parameters.AddWithValue("@Personnel_Number", EmployeeNo);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count > 0)
{
(row.Cells[2].FindControl("txtEmployeeName1") as TextBox).Text = dt.Rows[0]["Employee_Name"].ToString();
}
}
}
如果我尝试保留 (row.Cells[2].FindControl("txtEmployeeName1") as TextBox).Text = dt.Rows[0]["Employee_Name"].ToString();在 foreach 循环之外,然后在行上发生错误
请指导我应该在此代码中更改什么 我在 cmd.ExecuteNonQuery() 上遇到错误;而我的循环第二次运行。 我的文本框在网格视图内
【问题讨论】:
-
有一个循环多次添加
@Personnel_Number....正如错误所说...将其全部移入循环中。 -
是的,而循环运行第二次出现错误,但我该如何解决?即使我不能将 executenonqury() 放在循环之外
-
将
SqlCommand cmd = ...放在循环中 -
cmd.Parameters.Clear() 在循环的开头