C# SQl cmd.ExecuteReader()返回什么
我正在学习ASP.NET。我想知道C# SQl cmd.ExecuteReader()返回什么,c#,asp.net,sqlcommand,executereader,C#,Asp.net,Sqlcommand,Executereader,我正在学习ASP.NET。我想知道cmd.ExecuteReader()的输出是否可以临时存储到诸如temp变量之类的东西中,以便以后重用或修改它。我经常使用临时变量来存储东西 如何让dropbox和gridview都与cmd.exectuteReader的结果一起工作。我不想为它创建新的SQL连接 变量t可能会保留内容,但显然我错了,因为它不起作用。它执行读卡器两次,在第二次运行时,没有数据填充下拉框 我该怎么做 protected void Page_Load(object sender,
cmd.ExecuteReader()
的输出是否可以临时存储到诸如temp变量之类的东西中,以便以后重用或修改它。我经常使用临时变量来存储东西
如何让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();
}
}
要回答您的问题,它将返回中所述的
SqlDataReader
您可以查看文档示例,以更好地了解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
}
}
void FillData()
{
// 1
//开放连接
使用(SqlConnection c=newsqlconnection(
Properties.Settings.Default.DataConnectionString)
{
c、 Open();
// 2
//创建新的数据适配器
使用(SqlDataAdapter a=新的SqlDataAdapter)(
“从员工ID中选择*”,c))
{
// 3
//使用DataAdapter填充DataTable
DataTable t=新的DataTable();
a、 填充(t);
// 4
//将数据渲染到屏幕上
//dataGridView1.DataSource=t;//是SQL Server数据库中仅向前的行流
可以通过以下方式将SqlDataReader绑定到GridView:
简单的例子:
connection.Open();
command.Connection = connection;
SqlDataReader reader = command.ExecuteReader();
GridView1.DataSource = reader;
GridView1.DataBind();
或:
不要忘记配置Gridview控件内的列。填充数据表
(例如使用SqlDataAdapter.Fill
)或列表
,其中Employee
是一个自定义类,每个类包含一个属性(相关)列中的tblEmployees
。您可以将其用作GridView
和DropDownList
的DataTextField
和DataValueField
数据源,但是我这里没有使用SQLdataAdapter,gen中没有可以包含数据库读取器结果的通用对象吗一般来说,您不应该使用SqlDataReader,因为这是数据库的单向流,需要打开连接并返回一条记录,您应该将其加载到集合中以存储在内存中。@TimSchmelter如示例所示,SQLreader在这里读取整个数据库而不是一条记录,我想知道它是什么类型的ExecuteReader将其数据存储在中,我知道这是一次读取操作抱歉,但是如果我可以运行cmd.executedatareader(),它确实提供了一个结果datagrids或Pulldown可以使用这样的结果,因此它必须是某种通用类型(我知道还有其他读取数据库的方法),但我在这里感兴趣的是ExecutedAtReader,这正是我告诉您可以查看文档的原因。有一个示例,您可以相应地研究和更改代码。SQLdatareader是一个对象,而不是一个值类型,如integer int dword等。我可以编写的代码是System.Data.DataTable tb=new System.Data.DataTable();tb.Load(cmd.ExecuteReader)
probaply最后一行是答案,datareader返回一个datatable,很抱歉这有点让人困惑好吧,我不得不稍微习惯数据库不是列表或基本类型(dword/int)他们的声明从类型开始,然后是一个值赋值,我认为这也可以在整个数据库中完成,但这确实是你在.net中的第二个答案
DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader());
GridView1.DataSource = dt;