如何定位 SqlException 0x80131904“转换数据类型错误”的原因

本文关键字:错误 数据类型 转换 0x80131904 何定位 定位 SqlException | 更新日期: 2023-09-27 18:34:57

我有一些与 SqlServer 2012 数据库交互的 C# 代码。它使用基于大型复杂 SQL 查询创建的SqlDataReader。 想象一下:

SqlCommand command = new SqlCommand(
  "SELECT <a zillion fields>...",
  connection);
SqlDataReader reader = command.ExecuteReader();
while (reader.HasRows)
{
    while (reader.Read())
    {
        // do something
    }
    reader.NextResult();
}

}

当它执行Read操作时,它会抛出:

System.Data.SqlClient.SqlException (0x80131904): Error converting data type varchar to bigint

我想我已经找到了罪魁祸首。 有没有办法从 SqlException 中获取更多信息,特别是哪个列/字段导致了问题?

澄清一下,我可以(并且确实(手动识别潜在问题。 我的问题是我是否可以让 SqlServer 告诉我问题出在哪里,这样我就不必手动查看无数个字段。

如何定位 SqlException 0x80131904“转换数据类型错误”的原因

设置尝试...捕获然后遍历每一列,以便确定罪魁祸首。例如:

while ( reader.HasRows )    
{
    for( int index = 0; index < reader.FieldCount; index ++ )
    {
        fields[ reader.GetName( index ) ] = reader.GetString( index );
    }    
}

这是针对软件包的吗?

我会按 Ctrl+F 键处理代码中 Int64 的项,并查看它们被发送到的位置。存在输入与输出数据类型不同的错误,反之亦然。 检查数据源以确保数据类型也对齐。

相关文章: