识别哪一行导致c#中的异常

时间:2016-02-25 15:49:28

标签: c# ado.net

我有一个数据表,我们从一个数据库中获取值,将它们放入数据表并将它们插入另一个数据库。我正在使用sql和存储过程的执行查询方法来插入数据。如果一行有字符串或二进制数据截断错误,我们可以使用c#识别这个并在控制台上打印该行吗?

基本上,dt中的一切都很好但是当我插入它时我会得到例外。我可以获得导致异常的详细信息行吗?

任何人都可以指导我如何进行此操作吗?我需要知道引起问题的确切行。

1 个答案:

答案 0 :(得分:0)

如果您不知道哪个特定行导致了错误,您可能需要foreach循环播放它。

foreach(DataRow row in yourDataTable.Rows) {
    //Check for the issue.
}

这将循环遍历表中的每个DataRow。你必须检查每个单独的单元格,但你不能预先循环它,你必须根据行手动完成它。例如,如果您知道每个列名称,则可以执行以下操作:

if(row["whatever"]...) // you want to check for the issue here.

你也可以这样做:

int len = yourDataTable.Columns.Count;
foreach(DataRow row in yourDataTable.Rows) {
    for(int i = 0; i < len; i++) {
        //Check based in row[i] for your problem.
    }
}

这将遍历每一行,然后根据索引遍历每一行中的每个单元格。但是,您必须根据收到的类型进行比较,您必须根据DataTable的内容确定比较。