【问题标题】:Deleting SQLCommand throwing inadequate exception删除 SQLCommand 引发不充分的异常
【发布时间】:2016-08-24 16:14:34
【问题描述】:

我有虚拟 dataGridView,它通过即时方法 documentation here 显示表中的所有值。我的视图有更多的计算列,所以我只用它来显示数据,然后只通过单个 SQLCommand 删除。 当我执行删除命令时,问题就来了。当我执行它时,它会抛出错误

将 nvarchar 值“TextValueFromThirdColumn”转换为数据类型 int 时转换失败。

xxx 不是 ID,而是第三列的计算数据。

using(SqlConnection c = new SqlConnection(Properties.Settings.Default.ConnectionString))
     {
          c.Open();
          SqlCommand command = new SqlCommand("delete from entryTable where ID = @id", c);
          command.Parameters.AddWithValue("@id", dataGridView1.SelectedRows[0].Cells["ID"].Value.ToString());
          command.ExecuteNonQuery();
     }

如您所见,我正在使用添加的参数构建查询,但抛出的错误对我来说似乎不够,因为第三列与我的 ID 列无关。提前感谢您的任何建议

【问题讨论】:

  • 你能不能把它改成这样:Convert.ToInt32(dataGridView1.SelectedRows[0].Cells["ID"].Value.ToString())
  • 我认为您已将ID 设置为主键,我认为它不允许您删除它,但您可以REPLACE 我相信。如果不是,也许您可​​以更改您的ID 列到具有自动增量的 INT 中,这样您就不必手动添加 int 键。
  • @McGaz ID 添加很好,正如您在屏幕截图中看到的那样,我认为这不是参数问题。现在当我尝试它时,它会抛出同样的错误
  • @Werdna 不,ID 列只是 Identity(1,1),主键是另外 2 列
  • 好的,你能把ID的列类型改成INT

标签: c# debugging datagridview sqlcommand


【解决方案1】:

好吧,这是我愚蠢的错。这是 SQL 服务器上触发器的问题。我没有意识到我对数据库布局进行了更改并且触发器停止工作,因为它将值插入到错误的列中。错误代码显示了触发器发生的情况,而不是行。

【讨论】:

    猜你喜欢
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 2016-10-13
    • 2017-10-16
    相关资源
    最近更新 更多