本文介绍了在C#中将oledbdatareader转换为dbdatareader的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何在C#中动态地将System.Data.OleDb.OleDbDataReader转换为System.Data.Common.DbDataReader
public T GetProjectCodes< t> (字符串Args) { string strProjects =; string QryAllProject =select * from tbl_Project_Details; if(Args ==S) { strProjects = MyTest.GetRecordString(gcnPROJECT,QryAllProject,*,\ n); return(T)Convert.ChangeType(strProjects,typeof(T)); } else { DbDataReader Dr = null; Dr = MyTest.GetDataReader(gcnPROJECT,QryAllProject); //此函数返回Dbdatareader // return(T)Convert.ChangeType(Dr,typeof(T)); // return(T)Convert.ChangeType(Dr,typeof(Dr)); return(T)Convert.ChangeType(Dr,typeof(T)); } // return(T)strProjects; } public static DbDataReader GetDataReader(DbConnection myConnection,string strQry) { DbDataReader ObjmyReader0 = null; DbDataReader ObjmyReader = null; string RetVal = string.Empty; DbCommand myCommand = null; myCommand =(DbCommand)myConnection.CreateCommand(); // myCommand.CommandText =SELECT * FROM Dept; myCommand.CommandText = strQry; if(myConnection.State == ConnectionState.Closed || myConnection.State == ConnectionState.Broken){ myConnection.Open(); } 尝试 { if(ObjmyReader!= null) { if(ObjmyReader.IsClosed == false) { ObjmyReader.Close(); } } ObjmyReader =(DbDataReader)myCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection); } catch(Exception rdExc) { if((ObjmyReader!= null)&&(ObjmyReader.IsClosed == false)) { ObjmyReader.Close(); ObjmyReader =(DbDataReader)myCommand.ExecuteReader(); } } 最后 { myCommand.Dispose(); ObjmyReader0 = ObjmyReader; // ObjmyReader.Close(); } 返回ObjmyReader0; // return(DbDataReader)Convert.ChangeType(ObjmyReader0,typeof(DbDataReader)); ObjmyReader0.Dispose(); }请检查并指导我... 谢谢 vilas
解决方案你为什么要那样做? OleDbDataReader 继承自 DbDataReader 类(参见 MSDN [ ^ ]),因此您可以直接退货,不需要任何转换 。
Hi, how to convert System.Data.OleDb.OleDbDataReader to System.Data.Common.DbDataReader dynamically in C#
public T GetProjectCodes<t> (string Args) { string strProjects = ""; string QryAllProject ="select * from tbl_Project_Details"; if (Args == "S") { strProjects = MyTest.GetRecordString(gcnPROJECT, QryAllProject, "*", "\n"); return (T)Convert.ChangeType(strProjects, typeof(T)); } else { DbDataReader Dr = null; Dr = MyTest.GetDataReader(gcnPROJECT, QryAllProject);// this function returns Dbdatareader //return (T)Convert.ChangeType(Dr, typeof(T)); //return (T)Convert.ChangeType(Dr, typeof(Dr)); return (T)Convert.ChangeType(Dr, typeof(T)); } // return (T) strProjects; } public static DbDataReader GetDataReader(DbConnection myConnection, string strQry) { DbDataReader ObjmyReader0 = null; DbDataReader ObjmyReader = null; string RetVal = string.Empty; DbCommand myCommand = null; myCommand = (DbCommand)myConnection.CreateCommand(); // myCommand.CommandText = "SELECT * FROM Dept"; myCommand.CommandText = strQry; if (myConnection.State == ConnectionState.Closed || myConnection.State == ConnectionState.Broken) { myConnection.Open(); } try { if (ObjmyReader != null) { if (ObjmyReader.IsClosed == false) { ObjmyReader.Close(); } } ObjmyReader = (DbDataReader)myCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection); } catch (Exception rdExc) { if ((ObjmyReader != null) && (ObjmyReader.IsClosed == false)) { ObjmyReader.Close(); ObjmyReader = (DbDataReader)myCommand.ExecuteReader(); } } finally { myCommand.Dispose(); ObjmyReader0 = ObjmyReader; // ObjmyReader.Close(); } return ObjmyReader0; //return (DbDataReader)Convert.ChangeType(ObjmyReader0, typeof(DbDataReader)); ObjmyReader0.Dispose(); }Please check and guide me... thanks vilas
解决方案 Why would you want to do that? The OleDbDataReader inherits from DbDataReader class (see MSDN[^]) , hence you may return it directly, without any ''conversion''.更多推荐
在C#中将oledbdatareader转换为dbdatareader
发布评论