zoukankan      html  css  js  c++  java
  • c#ADO.NET 执行带参数及有返回数据

    直接上代码,这个过程中有个数据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);
    }
    }

  • 相关阅读:
    dstat
    centos安装指定版本的golang
    APP防CC为什么复杂
    火狐浏览器的书签如何自动在新窗口打开?
    linux jdk版本随时切换
    centos7 yum安装java环境
    kangle清除缓存接口
    CC攻击原理及防范方法
    GET 和 POST 的区别 以及为什么 GET请求 比 POST请求 更快
    HTTP缓存机制
  • 原文地址:https://www.cnblogs.com/lijunfengcz/p/11800288.html
Copyright © 2011-2022 走看看