SQl cmd.ExecuteReader() 是什么 return
SQl cmd.ExecuteReader() what does it return
我正在学习ASP.NET。我想知道 cmd.ExecuteReader()
的输出是否可以暂时存储到某个东西中,例如临时变量,以便以后重新使用或更改它。我经常使用临时变量来存储东西。
我怎样才能让 dropbox
和 gridview
都使用 cmd.exectuteReader
的结果。我不想为其创建新的 SQL 连接。
变量t
可能会保留内容,但显然我错了,因为它不起作用。它执行 reader 两次,第二次 运行 没有数据填充下拉框。
我该怎么做?
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();
}
}
为了回答您的问题,returns SqlDataReader
如 Msdn documentation - SqlCommand.ExecuteReader Method ()
中所述
您可以查看文档示例以更好地理解 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
}
}
我暂时不会使用你的代码,所以你可以在这个例子上做实验。如果您需要进一步的帮助,请在更改代码后编辑您的原始 post。
SqlDataReader 是来自 SQL 服务器数据库的只进行流。
您可以通过以下方式将 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 控件中配置列。
我正在学习ASP.NET。我想知道 cmd.ExecuteReader()
的输出是否可以暂时存储到某个东西中,例如临时变量,以便以后重新使用或更改它。我经常使用临时变量来存储东西。
我怎样才能让 dropbox
和 gridview
都使用 cmd.exectuteReader
的结果。我不想为其创建新的 SQL 连接。
变量t
可能会保留内容,但显然我错了,因为它不起作用。它执行 reader 两次,第二次 运行 没有数据填充下拉框。
我该怎么做?
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();
}
}
为了回答您的问题,returns SqlDataReader
如 Msdn documentation - SqlCommand.ExecuteReader Method ()
您可以查看文档示例以更好地理解 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
}
}
我暂时不会使用你的代码,所以你可以在这个例子上做实验。如果您需要进一步的帮助,请在更改代码后编辑您的原始 post。
SqlDataReader 是来自 SQL 服务器数据库的只进行流。
您可以通过以下方式将 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 控件中配置列。