在C#中将oledbdatareader转换为dbdatareader [英] convert oledbdatareader to dbdatareader in C#

查看:57
本文介绍了在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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆