直接上代码,这个过程中有个数据SqlDataReader转为 DataTable的过程,当中为什么这样,是应为我直接绑定DataSource的时候没有数据,网人家说直接绑定但是没效果,我就转换了一下。
//存储过程
        public static DataTable  GetTableaToPROCEDURE(string ProcName,DateTime begin,DateTime end,string Name, string strcon)
        {
            using (SqlConnection conn = new SqlConnection(strcon))
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.CommandTimeout = 1000;
                cmd.Connection = conn;
                cmd.CommandText = ProcName;//需要调用的存储过程
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter para0 = new SqlParameter("@ad_begin", SqlDbType.DateTime);//参数名称,类型,大小
                para0.Value = begin;
                SqlParameter para1 = new SqlParameter("@ad_end", SqlDbType.DateTime);//参数名称,类型,大小
                para1.Value = end;
                SqlParameter para2 = new SqlParameter("@ClientName", SqlDbType.NVarChar, 100);//参数名称,类型,大小
                para2.Value = Name;
                cmd.Parameters.Add(para0);
                cmd.Parameters.Add(para1);
                cmd.Parameters.Add(para2);
                //获得数据
                SqlDataReader sqlDate = cmd.ExecuteReader();//执行完后关闭连接
                DataTable dt = new DataTable();//新建一个临时表存放结果
                dt= ConvertDataReaderToDataTable(sqlDate);
                return dt;
            }
        }
        /// <summary>
        /// SqlDataReader 转成 DataTable
        /// </summary>
        /// <param name="dataReader"></param>
        /// <returns></returns>
        private static DataTable ConvertDataReaderToDataTable(SqlDataReader dataReader)
        {
            ///定义DataTable  
            DataTable datatable = new DataTable();
            try
            {    ///动态添加表的数据列  
                for (int i = 0; i < dataReader.FieldCount; i++)
                {
                    DataColumn myDataColumn = new DataColumn();
                    myDataColumn.DataType = dataReader.GetFieldType(i);
                    myDataColumn.ColumnName = dataReader.GetName(i);
                    datatable.Columns.Add(myDataColumn);
                }
                ///添加表的数据  
                while (dataReader.Read())
                {
                    DataRow myDataRow = datatable.NewRow();
                    for (int i = 0; i < dataReader.FieldCount; i++)
                    {
                        myDataRow[i] = dataReader[i].ToString();
                    }
                    datatable.Rows.Add(myDataRow);
                    myDataRow = null;
                }
                ///关闭数据读取器  
                dataReader.Close();
                return datatable;
            }
            catch (Exception ex)
            {
                ///抛出类型转换错误  
                //SystemError.CreateErrorLog(ex.Message);  
                throw new Exception(ex.Message, ex);
            }
        }
原文:https://www.cnblogs.com/lijunfengcz/p/11800288.html