这是我用来将记录插入SQL SERVER DB
的代码while (dr.Read())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_InsertEmailRecord";
cmd.Connection = con;
cmd.Parameters.AddWithValue("@mId", memberId);
cmd.Parameters.AddWithValue("@companyName", dr.GetValue(0));
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
第一个记录插入成功,但当它运行第二个时它返回错误
Procedure or function sp_Record has too many arguments specified
参数加起来
表示第一次插入参数= 2&在接下来又增加了2个......
如何解决???
答案 0 :(得分:4)
因为您的SqlCommand
已经定义了@mId
和@companyName
参数,因为您没有清除参数。
您有2个选项;
cmd.Parameters.Clear()
清除while语句末尾的参数。SqlCommand
对象顶部 while语句,如SqlCommand cmd = new SqlCommand()
最正确的方法是在您之前定义@companyName
参数名称,并在像John Saunders mentioned这样的while语句中添加它的值。
还可以使用using
statement来处理您的SqlDataReader
;
using (SqlDataReader dr = cmd.ExecuteReader())
{
if (dr != null)
{
while (dr.Read())
{
//do something
}
}
}
答案 1 :(得分:3)
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_InsertEmailRecord";
cmd.Connection = con;
cmd.Parameters.AddWithValue("@mId", memberId);
cmd.Parameters.Add("@companyName");
con.Open();
while (dr.Read())
{
cmd.Parameters["@companyName"].Value = dr.GetValue(0);
cmd.ExecuteNonQuery();
}
con.Close();