如何在.NET Framework 1.1中编写参数化查询

时间:2015-04-11 06:23:43

标签: c# asp.net

您好我在下面使用.NET Framework 1.1编写的代码

 SqlCommand cmd;
            string strQuery =
                "INSERT INTO EmployeeDetails (EmployeeID,ReasonOfChange) VALUES (@EmployeeID,@ReasonOfChange)";

            cmd = new SqlCommand(strQuery);
            cmd.Parameters["@EmployeeID"].Value = EmployeeID;
            cmd.Parameters["@ReasonOfChange"].Value = ReasonOfChange;

            int rowsAffected = cmd.ExecuteNonQuery();

但它给了我错误。

错误详情为:

带有ParameterName' @ EmployeeID'的SqlParameter不包含在此SqlParameterCollection中。 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。 异常详细信息:System.IndexOutOfRangeException:带有ParameterName' @ EmployeeID'的SqlParameter不包含在此SqlParameterCollection中。 来源错误:

cmd = new SqlCommand(strQuery);

cmd.Parameters["@EmployeeID"].Value = EmployeeID;

您能否帮助我在.NET Framework 1.1中编写查询的正确方法。提前谢谢。

4 个答案:

答案 0 :(得分:2)

出现什么错误?看起来你没有指定与数据库的连接来执行命令?虽然你可能只是从你的代码片段中省略了......

答案 1 :(得分:0)

EmployeeID的控件名称或变量名称放在下面,而不是列名。

>   cmd.Parameters.AddWithValue("@EmployeeID", (EmployeeID)textbox.text);

答案 2 :(得分:0)

试试这个

cmd.Parameters.AddWithValue("@EmployeeID", (EmployeeID)textbox.text);
cmd.Parameters.AddWithValue("@ReasonOfChange", (ReasonOfChange)textbox.text);

或尝试这样:

cmd.Parameters.Add("@EmployeeID", SqlDbType.Int,15);
cmd.Parameters.Add("@ReasonOfChange", SqlDbType.NVarChar,15);

答案 3 :(得分:0)

我已经解决了这个问题:

我将代码更改为:

cmd.Parameters.Add("@EmployeeID",EmployeeID);
cmd.Parameters.Add("@ReasonOfChange",ReasonOfChange);

cmd = new SqlCommand(strQuery,Connection);

以前连接缺失。

感谢您的宝贵意见。