我暂时没有使用基本的SQL命令,我试图将一个参数传递给一个sproc并运行它。但是,当我运行代码时,我收到“未提供”错误。
代码:
SqlConnection conn1 = new SqlConnection(DAL.getConnectionStr());
SqlCommand cmd1 = new SqlCommand("SProc_Item_GetByID", conn1);
cmd1.Parameters.Add(new SqlParameter("@ID", itemId));
conn1.Open();
cmd1.ExecuteNonQuery();
我不确定为什么会失败。对基本问题道歉,但我迷路了!
提前致谢。
答案 0 :(得分:3)
您应该将CommandType
设置为StoredProcedure
,设置连接并使用Parameters.AddWithValue("@ID", itemID)
cmd1.CommandType = CommandType.StoredProcedure;
cmd1.Connection = conn1;
cmd1.Parameters.AddWithValue("@ID",itemID);
conn1.Open();
cmd1.ExecuteNonQuery();
如果您想使用Parameters.Add()
(已过时),请按以下步骤操作(您也需要传递类型)
cmd1.Parameters.Add("@ID", SqlDbType.Int); //string maybe, I don't know
cmd1.Parameters["@ID"].Value = itemID;
这应该有效:
SqlConnection conn1 = new SqlConnection(DAL.getConnectionStr());
SqlCommand cmd1 = new SqlCommand("SProc_Item_GetByID", conn1);
cmd1.CommandType = CommandType.StoredProcedure;
cmd1.Parameters.AddWithValue("@ID", itemId);
conn1.Open();
cmd1.ExecuteNonQuery();
答案 1 :(得分:2)
为了让您的代码更好,请将SqlConnection
和SqlCommand
放入using
语句中,以便在使用块结束时自动释放它们:
using(SqlConnection conn1 = new SqlConnection(DAL.getConnectionStr()))
{
using(SqlCommand cmd1 = new SqlCommand("SProc_Item_GetByID", conn1))
{
cmd1.CommandType = CommandType.StoredProcedure;
cmd1.Parameters.AddWithValue("@ID", itemId);
conn1.Open();
cmd1.ExecuteNonQuery();
conn.Close();
}
}