c# - 无法使用 SqlDataReader.GetColumnSchema()
问题描述
我正在尝试使用 SqlDataReader 类的 GetColumnSchema 方法。但是 VS 告诉我 SqlDataReader 不包含 GetColumnSchema 的定义。我错过了命名空间或程序集引用吗?
我的项目正在使用 .NET Framework 4.6.1
using System;
using DocuWare.LoggingNew;
using System.Data.SqlClient;
using System.Data;
using System.Xml.Linq;
using System.Linq;
using System.IO;
private void WriteSQLQueryOutputToTextFile(string DBUser, string DBUserPassword, string sqlQuery, string databaseName, string nameOfOutputFile)
{
StreamWriter outputFile = new StreamWriter(dWTestResult + "\\DatabaseUpgradeCheck\\" + nameOfOutputFile);
using (SqlConnection sqlCon = new SqlConnection("Data Source=" + GetEnvironmentVariable.MachineName + "; Initial Catalog=" + databaseName + "; User ID=" + DBUser + "; Password=" + DBUserPassword + ";"))
{
SqlCommand command = new SqlCommand(sqlQuery, sqlCon);
sqlCon.Open();
SqlDataReader reader = command.ExecuteReader();
try
{
while (reader.Read())
{
var columnSchema = reader.GetColumnSchema();
string header = string.Empty;
for (int i = 0; i < reader.FieldCount; i++)
{
header += $", {columnSchema[i].ColumnName}";
}
}
}
catch (Exception ex)
{
logger.Debug(ex, "Writing Database Output to the " + nameOfOutputFile + " file failed");
}
finally
{
reader.Close();
outputFile.Close();
sqlCon.Close();
}
}
}
解决方案
SqlDataReader
有一个属性GetName()
,它接受一个索引并返回列名。
大多数 .Net 框架(从 v1.1 开始)和 .Net 核心(从 v1.0 开始)版本都支持GetName() 。
while (reader.Read())
{
string header = string.Empty;
for (int i = 0; i < reader.FieldCount; i++)
{
header += $", {reader.GetName(i)}";
}
}
或者你可以使用方法链和 Linq 来做到这一点:
// returns List<string>
var columns = Enumerable.Range(0, reader.FieldCount)
.Select(reader.GetName)
.ToList();
// columns joined on ", "
var header = string.Join(", ", columns);
推荐阅读
- svg.js - 无法为 SVG.JS 中的函数创建的多边形设置动画
- python - urllib.request 在开头添加字符
- javascript - 登录失败时收到登录警报
- python - 如果为该邮件帐户启用了 MFA,如何通过 python 脚本发送邮件?
- php - 无法使用 openssl_private_decrypt 解密任何消息
- c# - C# 和深拷贝中的 Elm 架构 (MVU)
- html - 画外音无法从选择下拉列表中发音非英语选项
- sql-server - 如何通过加入另一个表从数据中更新在xml中具有多个相同元素的表中的xml
- cordova - 安装`ionic cordova plugin add cordova-plugin-fcm-with-dependecy-updated`后无法构建我的Ionic项目
- python - 相同的命令但不同的结果,cmd和python子进程之间的奇怪行为