SQl cmd.ExecuteReader() что он возвращает

Я изучаю ASP.NET. Интересно, если cmd.ExecuteReader()Выходные данные могут быть временно сохранены во что-то, например, временную переменную, чтобы позже использовать или изменить ее. Я часто использую временные переменные для хранения вещей.

Как я могу позволить dropbox и gridview оба работают с результатом 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 ответа

Решение

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.

Чтобы ответить на ваш вопрос, он возвращается SqlDataReader как указано в документации Msdn - метод SqlCommand.ExecuteReader ()

Вы можете проверить пример документации для лучшего понимания ExecuteReader()

Вы как бы превратили это в проблему XY, но для привязки данных к GridView Вы должны использовать DataTable и SqlDataAdapter, Типичным примером будет:

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
    }
}

Я пока не буду использовать ваш код, чтобы вы могли поэкспериментировать с этим примером. Если вам нужна дополнительная помощь, отредактируйте исходный пост после изменения кода.

Другие вопросы по тегам