我有以下功能:
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>
答案 0 :(得分:1)
要回答有关获取读者返回的数据的问题,IDataReader
提供column count并按索引访问column name和column 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]。您可能希望查看列的数据类型以帮助格式化输出,但您可以轻松地遍历所有内容。