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

时间:2013-08-01 17:50:20

标签: c# sql db2

我有以下功能:

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,因为它是由以前的开发人员安装的,并且免费试用已经用完了)< / p>

3 个答案:

答案 0 :(得分:1)

要回答有关获取读者返回的数据的问题,IDataReader提供column count并按索引访问column namecolumn value

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

另外,您可以在线找到其他免费的SQL工具,因为您不再拥有SQL Manager。

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