2
私はOracleと作業しなければならないのですが、何年か特定のモデルで作業している間は、これは私たちの仕事ですが、私たちはそれを作らなければなりません。Oracle Data AccessでExecuteReader()を試行するとODP.NET 11.2
これで、Oracle 11gをインストールし、Oracle.DataAccess.dllをコピーして参照して、接続を開き、サーバー上に作成されたビューからオブジェクトを取得しようとするメソッドを作成しました。今
public BindingList<HeaderReceiver> GetHeaderReceivers()
{
try
{
using (OracleConnection db = new OracleConnection(BaseDataAccess.ConnString))
{
string cmdText = "select * from p_customer t";
BindingList<HeaderReceiver> headerReceivers = new BindingList<HeaderReceiver>();
OracleCommand cmd = new OracleCommand(cmdText) { CommandType = CommandType.Text };
db.Open();
OracleDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); <--- Error Occurs HERE!!!
while (reader.Read())
headerReceivers.Add(HeaderReceiver.GetInstance(reader));
CustBranchRepository rep = new CustBranchRepository();
headerReceivers.ForEach(p => p.DetailsBranch = rep.GetDetailReceivers(p.Id));
reader.Close();
db.Close();
return headerReceivers;
}
}
catch (Exception ex)
{
ExporterLogger.Log(ex);
return null;
}
}
のExecuteReader()が、私はこの例外InvalidOperationExceptionを得るコミット:
方法。
Operation is not valid due to the current state of the object.
のStackTrace:
at Oracle.DataAccess.Client.OracleCommand.ExecuteReader(Boolean requery, Boolean fillRequest, CommandBehavior behavior)
at Oracle.DataAccess.Client.OracleCommand.ExecuteReader(CommandBehavior behavior)
at Exporter.Boss.DataAccess.CustomerRepository.GetHeaderReceivers() in ...Exporter\Exporter.Boss.DataAccess\CustomerRepository.cs:line 25
任意の考えと助け...
ありがとうございました!
は、この記事を見つけました。 CommandオブジェクトでExecuteDataReader()を呼び出すと、このエラーが発生しました。私はCommandオブジェクトで接続を設定しましたが、ExecuteDataReader()を呼び出した後でこれを行いました。私は2つのラインを切り替えたとき、それは完璧にうまくいった。だから、これは正しい答えとマークする必要があります。 – Jeroen