【发布时间】:2012-10-08 14:35:45
【问题描述】:
我一直在尝试将参数添加到循环内的存储过程。下面给出的是我声明变量的代码。
SqlConnection con = new SqlConnection();
Connect conn = new Connect();
SqlDataReader readerCourseID = null;
con = conn.getConnected();
con.Open();
SqlCommand cmdAssignCourse;
cmdAssignCourse = new SqlCommand("assignCourse", con);
cmdAssignCourse.CommandType = CommandType.StoredProcedure;
cmdAssignCourse.Parameters.Add("@sID", System.Data.SqlDbType.VarChar);
cmdAssignCourse.Parameters.Add("@cID", System.Data.SqlDbType.VarChar);
SqlParameter retValue = cmdAssignCourse.Parameters.Add("return", System.Data.SqlDbType.Int);
下面是我将值插入到之前声明的变量中的代码。
foreach (DataRow row in dt.Rows)
{
//get course id from course name. Pass row["Course Name"].ToString()
int i = getCourseID(row["Course Name"].ToString());
//assignment of the course to student
cmdAssignCourse.Parameters["@sID"].Value = studentCurrID.Value.ToString();
cmdAssignCourse.Parameters["@cID"].Value = i;
retValue.Direction = ParameterDirection.ReturnValue;
cmdAssignCourse.ExecuteNonQuery();
if (retValue.Value.ToString() == "0")
{
MessageBox.Show("Added Course Successfully!");
//return 0;
}
else
{
MessageBox.Show("An error occured! Possibly a duplication of data!");
//return -1;
}
}
但是,此代码成功运行并显示消息“已成功添加课程!”一次。但是在第一次成功运行之后,每隔一次运行它就会给我“发生错误!可能是数据重复!”信息。可能的错误是没有清除变量。如何清除以下变量。请帮我解决一下这个。谢谢!
【问题讨论】:
-
尝试使用 SqlServer Profiler 查看您的代码发送到数据库的内容。这将为您提供参数值是否更改的答案。
-
您确定数据表
dt中没有重复条目吗?为什么将整数作为 varchars 传递?
标签: c# sql stored-procedures return parameter-passing