直接上代碼,這個過程中有個數據SqlDataReader轉為 DataTable的過程,當中為什麼這樣,是應為我直接綁定DataSource的時候沒有數據,網人家說直接綁定但是沒效果,我就轉換了一下。 //存儲過程 public static DataTable GetTableaToPROCEDU ...
直接上代碼,這個過程中有個數據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);
}
}