【发布时间】: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