我正在尝试从数据库中检索用户选择的数据。用户可以选择最多五个字段显示在报表中,字段是字符串,日期和数字的混合。由于运行其他报告,我无法将数据转换为SQL代码中的字符串。由于我不知道数据类型,我不能做datareader.GetSqlString(列),因为我不知道用户可能选择的列的名称,我不能做datareader.GetString(datareader。 GetOrdinal(列名))。关于如何在不知道数据类型或列名的情况下从数据库中检索值的任何想法?
提前致谢。
答案 0 :(得分:1)
您可以使用reader.GetSchemaTable()
获取数据阅读器架构的表格,或reader.GetType(n)
或reader.GetProviderSpecificType(n)
以获取特定字段的数据类型。
然后,您可以使用该信息来决定调用哪种方法:
if (reader.GetType(n) == typeof(string))
{
string value = reader.GetString(n);
}