我正在使用存储过程来更新托运编号 = @consignmentnumber 的列中的行。
这是代码的屏幕。 我想我遗漏了一些东西,但我无法解决我实际上遗漏的问题,有人可以帮忙吗?
protected void BtnReceived_Click(object sender, EventArgs e)
{
IncrementStatusOfConsignment(sender);
}
private static void IncrementStatusOfConsignment(object sender)
{
var button = (Button) sender;
var gridviewrow = (GridViewRow) button.Parent.Parent;
var consignmentnumber = gridviewrow.Cells[3].Text;
using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["Test"].ConnectionString))
{
con.Open();
using (var cmd = new SqlCommand("Test", con))
{
cmd.CommandType = CommandType.StoredProcedure;
var sqlparam = cmd.Parameters.Add("@consignmentnumber", SqlDbType.VarChar);
sqlparam.Value = consignmentnumber;
cmd.ExecuteNonQuery();
}
}
}
谁能告诉我哪里做错了或遗漏了什么?
我经常收到这个错误:
如果我将参数设置为 Int,它仍然不起作用。
最佳答案
如果您已将 consignmentnumber
列声明为 Numeric(18, 0),则
var sqlparam = cmd.Parameters.Add("@consignmentnumber", SqlDbType.Decimal);
sqlparam.Value = consignmentnumber;
或类似的东西:
var sqlparam = cmd.Parameters.Add("@consignmentnumber", SqlDbType.NVarChar, 18);
sqlparam.Value = consignmentnumber;
关于c# - 无法让我的更新工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23382143/