저는 ODP.Net을 처음 사용하고 기존 시스템에이를 구현하려고합니다. 현재 OLEDB를 사용하고 IDataReader 인터페이스를 사용하여 DataReader에서 레코드를 읽습니다. 그러나 동일한 코드 논리를 사용하는 ODP.Net을 사용하면 레코드가 선택되지 않습니다. 그래서, 내 질문은, Oracle.DataAccess.Client.OracleDataReader (ODP.Net) IDataReader 인터페이스를 구현합니까? IDataReader를 사용하지 않고 OracleDataReader를 사용하여 레코드를 읽으려고 시도하면 레코드가 선택됩니다. 내가 ODP.Net 10.1.0.4 사용하고Oracle.DataAccess.Client.OracleDataReader (ODP.Net)는 IDataReader 인터페이스를 구현합니까?
, 오라클 클라이언트 10g, ASP.Net
편집 :
string lstSelect = fstSelect + pstWhereClause;
IDbConnection lidcConn = fobCreateCon.CreateConnection();
lidcConn.ConnectionString = fstConStr;
IDbCommand lidcComm = fobCreateCon.CreateCommand();
lidcComm.Connection = lidcConn;
lidcComm.CommandText = lstSelect;
if (palParams != null)
{
for (int i = 0; i < palParams.Length; i++)
{
IDbDataParameter lidpParam = fobCreateCon.CreateParameter(
fstParameterPrefix + "PARA" + i.ToString(), palParams[i]);
lidcComm.Parameters.Add(lidpParam);
}
}
IDataReader lidrReader = null;
try
{
lidcConn.Open();
lidrReader = lidcComm.ExecuteReader(CommandBehavior.CloseConnection);
bool lboReturn = lidrReader.Read();
if (lboReturn)
{
fobEmployee.AR_Grace = lidrReader.IsDBNull(0) ? 0 : lidrReader.GetDecimal(0);
fobEmployee.Card_Issued = lidrReader.IsDBNull(1) ? string.Empty : lidrReader.GetString(1);
}
lidrReader.Close();
return lboReturn;
}
finally
{
if (lidrReader != null)
{
if (!lidrReader.IsClosed)
lidrReader.Close();
lidrReader.Dispose();
}
if (lidcConn.State != ConnectionState.Closed)
lidcConn.Close();
lidcConn.Dispose();
lidcComm.Dispose();
}
위는 지금 우리가 사용하는 코드입니다. 그것은 OLEDB, SQLClient와 완벽하게 작동합니다. ODP.Net에서이 코드를 사용할 때 아무런 결과도 반환되지 않습니다.
우리는이
OracleDataReader lidrReader = null;
try
{
lidcConn.Open();
lidrReader = (OracleDataReader)lidcComm.ExecuteReader(CommandBehavior.CloseConnection);
if (lidrReader.HasRow)
{
lidrReader.Read();
fobEmployee.AR_Grace = lidrReader.IsDBNull(0) ? 0 : lidrReader.GetDecimal(0);
fobEmployee.Card_Issued = lidrReader.IsDBNull(1) ? string.Empty : lidrReader.GetString(1);
}
lidrReader.Close();
}
로 변경 우리는 불가능는 300 개 이상의 데이터 파일 클래스를 포함 할 것이다 원인을 위의 코드로 변경하면 레코드를 선택하기 위해 관리하고 우리는 다른 데이터베이스에 대한 작업이 코드를합니다. 어떤 도움이 필요합니까?