Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle.DataAccess.Client.OracleDataReader(ODP.Net)是否实现IDataReader接口?_.net_Asp.net_Odp.net - Fatal编程技术网

Oracle.DataAccess.Client.OracleDataReader(ODP.Net)是否实现IDataReader接口?

Oracle.DataAccess.Client.OracleDataReader(ODP.Net)是否实现IDataReader接口?,.net,asp.net,odp.net,.net,Asp.net,Odp.net,我是ODP.Net的新手,尝试在现有系统中实现它。目前,我们正在使用OLEDB和IDataReader接口从DataReader读取记录。但是,当我们使用相同的代码逻辑使用ODP.Net时,没有选择任何记录。所以,我的问题是,Oracle.DataAccess.Client.OracleDataReader(ODP.Net)是否实现了IDataReader接口?如果我尝试使用OracleDataReader而不使用IDataReader读取记录,则选中该记录 我使用的是ODP.Net 10.1.

我是ODP.Net的新手,尝试在现有系统中实现它。目前,我们正在使用OLEDB和IDataReader接口从DataReader读取记录。但是,当我们使用相同的代码逻辑使用ODP.Net时,没有选择任何记录。所以,我的问题是,Oracle.DataAccess.Client.OracleDataReader(ODP.Net)是否实现了IDataReader接口?如果我尝试使用OracleDataReader而不使用IDataReader读取记录,则选中该记录

我使用的是ODP.Net 10.1.0.4, Oracle客户端10g, ASP.Net

编辑:


我们不可能将其更改为上述代码,因为它将涉及300多个数据文件类,我们希望此代码适用于其他数据库。有什么帮助吗?

如果我们谈论的是
System.Data.IDataReader
,答案是肯定的。事实上,
OracleDataReader
继承自抽象类
System.Data.Common.DbDataReader
,后者又继承自
System.Data.IDataReader

换句话说,Oracle对ADO.NET的使用很好,并且应该或多或少与其他ADO.NET提供程序完全相同

虽然我没有尝试过10.2.x之前的版本,但我怀疑事情已经发生了重大变化。我对OracleDataReader没有任何问题

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();
}
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();
}