Asp.net SqlDataReader转成Datatable

Asp.net SqlDataReader转成Datatable

所属栏目:Asp.net 编程 | 发布日期:2013年04月05日 | 点击:517 次
内容摘要:Asp.net 数据存储,呈现方式有多种,如DataSet,DataTable,DataView,DataReader,IList等等,做得多了,常会需要将数据存储类型相互转换,这边介绍DataReader转DataTable的方法。
  1. /// <summary>   
  2. /// SqlDataReader转成DataTable实现方法   
  3. /// </summary>   
  4. /// <param name="strSql"></param>   
  5. /// <returns></returns>   
  6. protected DataTable DataReaderToDataTable(string strSql)   
  7. {   
  8.     string connstr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;   
  9.     SqlConnection sqlConn = new SqlConnection(connstr);   
  10.     SqlCommand sqlComm = new SqlCommand(strSql, sqlConn);   
  11.     SqlDataReader dataReader = null;   
  12.     DataTable dtReturn = null;   
  13.     object[] value = null;   
  14.     try  
  15.     {   
  16.         sqlComm.Connection.Open();   
  17.         dataReader = sqlComm.ExecuteReader();   
  18.         if (dataReader.HasRows)   
  19.         {   
  20.             dtReturn = CreateTableBySchemaTable(dataReader.GetSchemaTable());   
  21.             value = new object[dataReader.FieldCount];   
  22.             while (dataReader.Read())   
  23.             {   
  24.                 dataReader.GetValues(value);   
  25.                 dtReturn.LoadDataRow(value, true);   
  26.             }   
  27.             value = null;   
  28.         }   
  29.   
  30.     }   
  31.     catch (Exception err)   
  32.     {}   
  33.     finally  
  34.     {   
  35.         dataReader.Close();   
  36.         sqlComm.Connection.Close();   
  37.         sqlComm.Dispose();   
  38.     }   
  39.     return dtReturn;   
  40. }   
  41.       /// <summary>
       

        /// 本方法创建表各个列的名
       

        /// </summary>
       

        /// <param name="pSchemaTable">是一个表的结构表</param>
       

        /// <returns></returns> 
  42. protected DataTable CreateTableBySchemaTable(DataTable pSchemaTable)   
  43. {   
  44.     DataTable dtReturn = new DataTable();   
  45.     DataColumn dc = null;   
  46.     DataRow dr = null;   
  47.     for (int i = 0; i < pSchemaTable.Rows.Count; i++)   
  48.     {   
  49.         dr = pSchemaTable.Rows[i];   
  50.         dc = new DataColumn(dr["ColumnName"].ToString(), dr["DataType"as Type);   
  51.         dtReturn.Columns.Add(dc);   
  52.     }   
  53.     dr = null;   
  54.     dc = null;   
  55.     return dtReturn;   
  56. }  
    /// <summary>
    /// SqlDataReader转成DataTable实现方法
    /// </summary>
    /// <param name="strSql"></param>
    /// <returns></returns>
    protected DataTable DataReaderToDataTable(string strSql)
    {
        string connstr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        SqlConnection sqlConn = new SqlConnection(connstr);
        SqlCommand sqlComm = new SqlCommand(strSql, sqlConn);
        SqlDataReader dataReader = null;
        DataTable dtReturn = null;
        object[] value = null;
        try
        {
            sqlComm.Connection.Open();
            dataReader = sqlComm.ExecuteReader();
            if (dataReader.HasRows)
            {
                dtReturn = CreateTableBySchemaTable(dataReader.GetSchemaTable());
                value = new object[dataReader.FieldCount];
                while (dataReader.Read())
                {
                    dataReader.GetValues(value);
                    dtReturn.LoadDataRow(value, true);
                }
                value = null;
            }

        }
        catch (Exception err)
        {}
        finally
        {
            dataReader.Close();
            sqlComm.Connection.Close();
            sqlComm.Dispose();
        }
        return dtReturn;
    }

    /// <summary>
   
/// 本方法创建表各个列的名
   
/// </summary>
   
/// <param name="pSchemaTable">是一个表的结构表</param>
   
/// <returns></returns> protected DataTable CreateTableBySchemaTable(DataTable pSchemaTable) { DataTable dtReturn = new DataTable(); DataColumn dc = null; DataRow dr = null; for (int i = 0; i < pSchemaTable.Rows.Count; i++) { dr = pSchemaTable.Rows[i]; dc = new DataColumn(dr["ColumnName"].ToString(), dr["DataType"] as Type); dtReturn.Columns.Add(dc); } dr = null; dc = null; return dtReturn; }

方法来自互联网,忘记从哪来的,在此注明。

作者:www.btnan.com,来源于:http://www.btnan.com,尊重作者,转载请注明。

 
原文地址:https://www.cnblogs.com/zhouyunbaosujina/p/3357593.html