繁体   English   中英

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

[英]How to get raw output from SQL command in C#

我有以下功能:

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 ,因此无法使用SQL Manager for DB2 ,并且免费试用期已结束)

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

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

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

看一下InfoMessage事件。 它可能会发送您所需的信息,因为我没有DB2,所以我可以进行测试。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM