1

我有以下功能:

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"];
        }
    }
}

无论如何,我可以获得选择语句中返回的所有内容的原始转储吗?

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

(我处于“在黑暗中编码”的情况,对服务器没有太多访问权限。我不能使用SQL Manager for DB2,因为它是由以前的开发人员安装的,并且免费试用版已经用完)

4

3 回答 3

1

要回答有关获取读取器返回的数据的问题,请IDataReader提供列计数并按索引访问列名列值

于 2013-08-01T17:54:53.590 回答
1

您可以使用reader.GetValues(...)将记录中的所有值放入object[].

var valueArray = new object[reader.FieldCount];
reader.GetValues(valueArray);
于 2013-08-01T18:01:36.067 回答
0

查看 InfoMessage 事件。它可能会发送您需要的东西,我没有 DB2,所以我可以测试。

顺便说一句,由于您不再拥有 SQL Manager,因此您可以在线找到其他免费的 SQL 工具。

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

于 2013-08-01T17:53:22.653 回答