我是ODP.Net的新成員,並試圖將其實施到我們現有的系統中。目前,我們使用OLEDB並使用IDataReader接口從DataReader讀取記錄。但是,當我們使用相同的代碼邏輯使用ODP.Net時,沒有選擇記錄。所以,我的問題是,Oracle.DataAccess.Client.OracleDataReader(ODP.Net)是否實現了IDataReader接口?如果我嘗試使用OracleDataReader讀取記錄而不使用IDataReader所選記錄。Oracle.DataAccess.Client.OracleDataReader(ODP.Net)是否實現IDataReader接口?
我使用ODP.Net 10.1.0.4, Oracle客戶端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個數據文件中的類,我們希望此代碼爲其他數據庫的工作。任何幫助?