如何从C#中的SQL命令中获取原始输出

本文关键字:获取 原始 输出 命令 SQL 中的 | 更新日期: 2023-09-27 18:26:01

我有以下功能:

private IDataReader ExecuteReader(OdbcCommand command) {
    var connection = new OdbcConnection(MyConnectionStringVar);
    command.Connection = connection;
    command.Connection.Open();
    command.CommandTimeout = 0;
    return command.ExecuteReader(CommandBehavior.CloseConnection);
}

我可以这样使用:

var query = "SELECT * FROM TableName";
using (var command = new OdbcCommand(query))
{
    using (var reader = ExecuteReader(command))
    {
        while (reader.Read())
        {
            // get the value of ColumnName for the 
            // current row in the result set:
            // reader["ColumnName"];
        }
    }
}

我是否可以获得select语句中返回的所有内容的原始转储?

我希望能够使用DESCRIBE或类似的命令来获取其他信息,但我不想每次只为了读取正确的列名而更改一堆代码。有时,就像在SELECT *中一样,我不知道列名是什么。

(我处于一种"在黑暗中编码"的情况,无法访问服务器。我不能使用SQL Manager for DB2,因为它是由以前的开发人员安装的,免费试用版已经用完了)

如何从C#中的SQL命令中获取原始输出

您可以使用reader.GetValues(...)将记录中的所有值获取到object[]中。

var valueArray = new object[reader.FieldCount];
reader.GetValues(valueArray);

为了回答有关获取读取器返回的数据的问题,IDataReader提供了列计数,并通过索引访问列名和列值。

查看InfoMessage事件。它可能会发送您需要的内容,因为我没有DB2,所以我可以进行测试。

顺便说一句,由于您不再有SQL管理器,您可以在网上找到其他免费的SQL工具。

编辑:我误解了。我想你想要的输出就像你从PRINT语句和一些系统命令中得到的一样。DarkFalcon的答案是正确的。。。您可以做一个简单的for循环和输出读取器[i]。您可能希望查看列的数据类型以帮助格式化输出,但可以轻松地遍历所有数据类型。