C# 如何循环遍历OracleDataReader的所有列
我有以下代码,我想循环查询结果中的所有字段,并填充名为field的字典 给定一个数据读取器,这可能吗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
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();