0

我正在尝试编写一个简单的帮助函数,该函数使用Oracle.ManagedDataAccess.Core库连接到 Oracle 数据库,并返回行。

当与数据库的连接关闭时,返回的对象应该仍然存在。类似于以下内容。不确定会是什么。

public <sometype> GetOracleResults(string connectionString, string cmdText, List<OracleParameter> oracleParameters)
{
    <sometype> results = null;
    try
    {
        using (OracleConnection oracleConnection = new OracleConnection(connectionString))
        {
            oracleConnection.Open();
            using (OracleCommand oracleCommand = new OracleCommand(cmdText, oracleConnection))
            {
                foreach (var param in oracleParameters)
                {
                    oracleCommand.Parameters.Add(param);
                }
                OracleDataReader oracleDataReader = oracleCommand.ExecuteReader();
                if(oracleDataReader.HasRows)
                {
                    results = new <sometype>();
                    while (oracleDataReader.Read())
                    {
                        //loop through the reader and add results
                        return results;
                    }
                }
            }
        }
    }
    catch (Exception)
    {
       //todo
        throw;
    }
}
4

1 回答 1

0

它必须是强类型的吗?如果不是,一位同事向我展示了将数据粘贴在字典项目列表中,例如:

var columns = new List<string>();
for (int i = 0; i < myReader.FieldCount; i++)
{
   columns.Add(myReader.GetName(i).Trim());
}

while (myReader.Read() && results.Count < 200)
{
   Dictionary<string, string> row = new Dictionary<string, string>();
   foreach (var column in columns)
   {
      row.Add(column, Convert.ToString(myReader[column], CultureInfo.InvariantCulture).Trim());
   }
   results.Add(row);
}

我想如果您知道架构以便进入方法的泛型类型具有与列名称匹配的属性名称,那么您可以使用反射将列结果与 C# 对象匹配。

于 2020-10-09T21:27:08.450 回答