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

selectステートメントで返されたすべての生のダンプを取得できる方法はありますか?

または同様のコマンドを使用DESCRIBEして他の情報を取得できるようにしたいのですが、毎回適切な列名から読み取るためだけに大量のコードを変更する必要はありません。のように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 に答える