Dan*_*ish 0 c# sql-server ado.net
这是我用来将记录插入 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();
}
Run Code Online (Sandbox Code Playgroud)
第一条记录插入成功,但是当它运行第二条记录时返回错误
Procedure or function sp_Record has too many arguments specified
参数已加
意思是在第一个插入参数= 2 &在接下来它添加了2个......
怎么解决???
因为你SqlCommand已经定义了@mId参数,@companyName因为你没有清除参数。
你有2个选择;
cmd.Parameters.Clear()在 while 语句末尾清除参数。SqlCommand顶部创建一个新对象,例如SqlCommand cmd = new SqlCommand()看起来最正确的方法是@companyName在 while 之前定义参数名称,并将其值添加到 while 语句中,就像 John Saunders提到的那样。
还可以使用using声明来处理您的SqlDataReader喜欢;
using (SqlDataReader dr = cmd.ExecuteReader())
{
if (dr != null)
{
while (dr.Read())
{
//do something
}
}
}
Run Code Online (Sandbox Code Playgroud)