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
}
}
Я пока не буду использовать ваш код, чтобы вы могли поэкспериментировать с этим примером. Если вам нужна дополнительная помощь, отредактируйте исходный пост после изменения кода.