直接上代碼,這個過程中有個數(shù)據(jù)SqlDataReader轉(zhuǎn)為 DataTable的過程,當中為什么這樣,是應(yīng)為我直接綁定DataSource的時候沒有數(shù)據(jù),,網(wǎng)人家說直接綁定但是沒效果,我就轉(zhuǎn)換了一下。
//存儲過程 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;//需要調(diào)用的存儲過程 cmd.CommandType = CommandType.StoredProcedure; SqlParameter para0 = new SqlParameter("@ad_begin", SqlDbType.DateTime);//參數(shù)名稱,,類型,,大小 para0.Value = begin; SqlParameter para1 = new SqlParameter("@ad_end", SqlDbType.DateTime);//參數(shù)名稱,類型,,大小 para1.Value = end; SqlParameter para2 = new SqlParameter("@ClientName", SqlDbType.NVarChar, 100);//參數(shù)名稱,,類型,大小 para2.Value = Name; cmd.Parameters.Add(para0); cmd.Parameters.Add(para1); cmd.Parameters.Add(para2); //獲得數(shù)據(jù) SqlDataReader sqlDate = cmd.ExecuteReader();//執(zhí)行完后關(guān)閉連接 DataTable dt = new DataTable();//新建一個臨時表存放結(jié)果 dt= ConvertDataReaderToDataTable(sqlDate); return dt; } } /// <summary> /// SqlDataReader 轉(zhuǎn)成 DataTable /// </summary> /// <param name="dataReader"></param> /// <returns></returns> private static DataTable ConvertDataReaderToDataTable(SqlDataReader dataReader) { ///定義DataTable DataTable datatable = new DataTable();
try { ///動態(tài)添加表的數(shù)據(jù)列 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); }
///添加表的數(shù)據(jù) 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; } ///關(guān)閉數(shù)據(jù)讀取器 dataReader.Close(); return datatable; } catch (Exception ex) { ///拋出類型轉(zhuǎn)換錯誤 //SystemError.CreateErrorLog(ex.Message); throw new Exception(ex.Message, ex); } }
|