我找不到问题出在哪里,当我把while循环作为注释工作时,在while循环之后我们无法从sqldatareader中读取更多? listbox2仍然是空的!
public partial class exTest : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string connectionString = WebConfigurationManager.ConnectionStrings["Northwind"].ConnectionString;
SqlConnection con = new SqlConnection(connectionString);
string sql = "select employeeid,firstname,lastname from employees";
SqlCommand cmd = new SqlCommand(sql, con);
con.Open();
SqlDataReader reader = cmd.ExecuteReader();
string item;
ListBox1.Items.Clear();
while (reader.Read())
{
item =reader.GetString(1) + reader.GetString(2);
ListBox1.Items.Add(item);
}
ListBox2.DataSource = reader;
ListBox2.DataValueField = "employeeId";
ListBox2.DataTextField = "firstname";
ListBox2.DataBind();
reader.Close();
con.Close();
}
}
答案 0 :(得分:0)
您无法再次使用reader
。
来自MSDN Doc
提供从SQL Server数据库中读取仅向前行的方法。
您可以一次阅读一行,但是一旦您阅读了下一行,就无法返回行。
您需要做的是创建包含list
,employee object
,employeeId
的{{1}}对象(例如firstname
)。填写列表并将其指定为lastname
或类似内容的来源。