使用 SqlDataReader 获取所有 SQL 列作为字符串
本文关键字:字符串 SQL SqlDataReader 获取 使用 | 更新日期: 2023-09-27 18:35:06
>我有几列的表,但是在收到它们之前我不知道每列的类型。 我想打印出所有这些的值,而无需检查每列的类型并使用开关块进行适当的转换。
我有以下代码:
string c0 = reader.GetValue(0).ToString();
string c1 = reader.GetValue(1).ToString();
但是,这并没有按预期工作。
例如,如果列作为类型返回 {int, byte[]}
,上面的代码将产生:
c0 = "719231" // as expected
c1 = "System.Byte[]" // trying to get "0x728AEBF720"
虽然我的具体问题
有没有一种我错过的干净方法可以做到这一点,或者我必须有一堆基于如下类型的切换逻辑?
if (o.GetType() == typeof(byte[]))
return System.Text.Encoding.Default.GetString(o as byte[]);
else if (... more chained special cases)
return o.ToString();
正如您所发现的,如果这是针对泛型表结构的,则必须自己处理无法转换为字符串的类型。
即byte[]
您可以通过以下方式获取类型
reader.GetFieldType(column)
还要确保检查空值