如何定位 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 告诉我问题出在哪里,这样我就不必手动查看无数个字段。
设置尝试...捕获然后遍历每一列,以便确定罪魁祸首。例如:
while ( reader.HasRows )
{
for( int index = 0; index < reader.FieldCount; index ++ )
{
fields[ reader.GetName( index ) ] = reader.GetString( index );
}
}
这是针对软件包的吗?
我会按 Ctrl+F 键处理代码中 Int64 的项,并查看它们被发送到的位置。存在输入与输出数据类型不同的错误,反之亦然。 检查数据源以确保数据类型也对齐。