SQl cmd.ExecuteReader()它返回什么

时间:2016-10-18 12:52:58

标签: c# asp.net sqlcommand executereader

我正在学习ASP.NET。我想知道cmd.ExecuteReader()的输出是否可以暂时存储到某些内容中,比如临时变量,以便以后重新使用或改变它。我经常使用临时变量来存储东西。

如何让dropboxgridview同时使用cmd.exectuteReader的结果。我不想为它创建新的SQL连接。

变量t可能会保留内容,但显然我错了,因为它不起作用。它执行两次读取器,在第二次运行时,没有数据填充下拉框。

我该怎么做?

 protected void Page_Load(object sender, EventArgs e)
 {
    string cs = System.Configuration.ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString; // reading by name DBCS out of the web.config file
    using (SqlConnection con = new SqlConnection(cs))
    {

      SqlCommand cmd = new SqlCommand("Select * from tblEmployees", con);
      con.Open();

       var t = cmd.ExecuteReader();

       GridView1.DataSource = t;// cmd.ExecuteReader();
       GridView1.DataBind();

        // DropDownList2.DataSource = cmd.ExecuteReader();
        DropDownList2.DataSource = t;//cmd.ExecuteReader();

       DropDownList2.DataTextField = "Name";
       DropDownList2.DataValueField = "EmployeeId";
       DropDownList2.DataBind();
    }
}

2 个答案:

答案 0 :(得分:1)

SqlDataReader是来自SQL Server数据库的仅向前行的流。

您可以通过以下方式将SqlDataReader绑定到GridView:

简单示例:

    connection.Open();
    command.Connection = connection;
    SqlDataReader reader = command.ExecuteReader();
    GridView1.DataSource = reader;
    GridView1.DataBind();

或者:

 DataTable dt = new DataTable();
 dt.Load(cmd.ExecuteReader());
 GridView1.DataSource = dt;

不要忘记配置Gridview控件中的列。

答案 1 :(得分:0)

要回答您的问题,它会按照Msdn documentation - SqlCommand.ExecuteReader Method ()

中的说明返回SqlDataReader

您可以查看文档示例,以便更好地了解ExecuteReader()

您有点将此转换为XY问题但是要将数据绑定到GridView,您应该使用DataTableSqlDataAdapter。一个通用的例子是:

void FillData()
{
    // 1
    // Open connection
    using (SqlConnection c = new SqlConnection(
    Properties.Settings.Default.DataConnectionString))
    {
    c.Open();
    // 2
    // Create new DataAdapter
    using (SqlDataAdapter a = new SqlDataAdapter(
        "SELECT * FROM EmployeeIDs", c))
    {
        // 3
        // Use DataAdapter to fill DataTable
        DataTable t = new DataTable();
        a.Fill(t);

        // 4
        // Render data onto the screen
        // dataGridView1.DataSource = t; // <-- From your designer
    }
}

我暂时不会使用您的代码,因此您可以尝试此示例。如果您需要进一步的帮助,请在更改代码后编辑原始帖子。