Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何循环遍历OracleDataReader的所有列_C#_Sql_Datareader - Fatal编程技术网

C# 如何循环遍历OracleDataReader的所有列

C# 如何循环遍历OracleDataReader的所有列,c#,sql,datareader,C#,Sql,Datareader,我有以下代码,我想循环查询结果中的所有字段,并填充名为field的字典 给定一个数据读取器,这可能吗 OracleCommand command = connection.CreateCommand(); string sql = "Select * from MYTABLE where ID = " + id; command.CommandText = sql; Dictionary<st

我有以下代码,我想循环查询结果中的所有字段,并填充名为field的字典

给定一个数据读取器,这可能吗

            OracleCommand command = connection.CreateCommand();
            string sql = "Select * from MYTABLE where ID = " + id;
            command.CommandText = sql;

            Dictionary<string, string> fields = new Dictionary<string, string>();
            OracleDataReader reader = command.ExecuteReader();
OracleCommand=connection.CreateCommand();
string sql=“从MYTABLE中选择*,其中ID=“+ID;
command.CommandText=sql;
字典字段=新字典();
OracleDataReader=command.ExecuteReader();
将返回有关列的大量信息,包括它们的名称、大小、类型等

我假定您希望字典的键是列名,值是行值。如果是这样,这应该是可行的:

var dict = reader.GetSchemaTable().Rows.OfType<DataRow>().Select(
    r => r["ColumnName"].ToString()
).ToDictionary(
    cn => cn,
    cn => reader[cn].ToString()
);
var dict=reader.GetSchemaTable().Rows.OfType().Select(
r=>r[“ColumnName”].ToString()
).ToDictionary(
cn=>cn,
cn=>reader[cn].ToString()
);

您还可以使用获取列数,并调用每个列。

您应该能够执行以下操作:

Dictionary<string, string> fields = new Dictionary<string, string>();
OracleDataReader reader = command.ExecuteReader();

if( reader.HasRows )
{
    for( int index = 0; index < reader.FieldCount; index ++ )
    {
        fields[ reader.GetName( index ) ] = reader.GetString( index );
    }    
}
字典字段=新字典();
OracleDataReader=command.ExecuteReader();
if(reader.HasRows)
{
for(int index=0;index
如果您拥有的数据不仅仅是字符串,那么应该用以下内容交换for循环的内部:fields[reader.GetName(index)]=reader.GetValue(index.ToString();