我正在处理一个项目,其中我需要连接到Oracle数据库。我还希望快速编写代码,并希望避免定义实体和使用EntityFrame来实现持久性。
根据Oracle示例,要从数据库检索数据,我需要依赖一个读取器,该读取器可以使用“cmd.ExecuteReader()”获得,然后使用一个While(Reader.Read())循环结果。
我发现这有点烦人。因此,在确保使用阅读器方式接收数据后,我尝试了一种在我看来是将整个结果转换为对象列表的方法,但这触发了无限循环。
以下是我尝试过的:
var result = new List<object>();
try
{
_connection = new OracleConnection(CONNECTION_STRING);
_connection.Open();
OracleCommand cmd = _connection.CreateCommand();
cmd.CommandText = "select * from <table>";
using (var reader = cmd.ExecuteReader())
{
result = reader.OfType<object>().ToList();
}
}
finally
{
if(_connection != null) _connection.Close();
}
return result;
}
使用ODP.NET Core以列表、数据集或JSON格式获取结果的最佳方式是什么?
更新:
使用OracleDataAdapter还会触发无限循环:
DataSet data = new DataSet();
try
{
_connection = new OracleConnection(CONNECTION_STRING);
_connection.Open();
OracleCommand cmd = _connection.CreateCommand();
cmd.CommandText = "select * from <table>";
OracleDataAdapter ora = new OracleDataAdapter(cmd);
ora.Fill(data);
}
finally
{
if(_connection != null) _connection.Close();
}
return data;
}
1条答案
按热度按时间rxztt3cl1#
使用OracleDataAdapter成功了!由于数据量大,会导致死循环。以下是工作代码: