如何从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,因为它是由以前的开发人员安装的,免费试用版已经用完了)
您可以使用reader.GetValues(...)
将记录中的所有值获取到object[]
中。
var valueArray = new object[reader.FieldCount];
reader.GetValues(valueArray);
为了回答有关获取读取器返回的数据的问题,IDataReader
提供了列计数,并通过索引访问列名和列值。
查看InfoMessage事件。它可能会发送您需要的内容,因为我没有DB2,所以我可以进行测试。
顺便说一句,由于您不再有SQL管理器,您可以在网上找到其他免费的SQL工具。
编辑:我误解了。我想你想要的输出就像你从PRINT语句和一些系统命令中得到的一样。DarkFalcon的答案是正确的。。。您可以做一个简单的for循环和输出读取器[i]。您可能希望查看列的数据类型以帮助格式化输出,但可以轻松地遍历所有数据类型。