【问题标题】:Can't get my Update to work无法让我的更新工作
【发布时间】:2014-04-30 07:29:12
【问题描述】:

我正在使用存储过程来更新托运编号 = @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 定义为存储过程中的字符吗?闻起来像你在你的 sp.. 中定义为整数类型。
  • 我无法查看提供的链接中的图像。您遇到的错误是什么,您可以在问题中粘贴。
  • 正如 soner 已经说过的,看起来您的参数类型错误,如果您不将其转换为 int,consignmentnumber 的值是多少?还有你在更新什么?我看不到任何值被传递到 SP。
  • 存储过程中@consignmentnumber是什么数据类型?
  • @dasariramacharanprasad 我已经编辑了问题以包含嵌入图像,OP 包含了网络链接而不是源图像 URL。

标签: c# asp.net sql


【解决方案1】:

如果您已将列 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;

【讨论】:

  • 谢谢大家。但是@Soner_Gonur,事实证明我在 proc 上弄错了:D 谢谢 -
猜你喜欢
  • 2018-08-23
  • 1970-01-01
  • 2016-09-02
  • 2015-05-20
  • 2015-10-22
  • 2023-03-24
  • 2017-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多