DataReader + DropDownList ASP.NET 项目

Posted

技术标签:

【中文标题】DataReader + DropDownList ASP.NET 项目【英文标题】:DataReader + DropDownList ASP.NET Project 【发布时间】:2012-08-31 12:40:03 【问题描述】:

用户必须从下拉列表中选择一个值,然后应从数据库中提取数据并将其放入页面上的标签(即书名、作者、评级、评论)。

这是我目前所拥有的,但它不起作用:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)

    if (IsPostBack)
    
        OleDbConnection con = new OleDbConnection(ConfigurationManager.ConnectionStrings["RegConnectionString"].ConnectionString);
        con.Open();

        OleDbCommand cmdReade = new OleDbCommand();
        OleDbDataReader reader = null;

        OleDbCommand cmdSelect = new OleDbCommand(@"SELECT * FROM Books WHERE bookName = '" + DdlSelectBook.SelectedItem.ToString() + "'");

        while (reader.Read())
        
            lblBookName.Text = reader["bookName"].ToString();
            lblAuthor.Text = reader["Author"].ToString();
            lblRating.Text = reader["Rating"].ToString();
            lblComments.Text = reader["Comments"].ToString();
        
    

数据库表是BookNameAuthorRatingComments,另外还有一个应该从项目中的文件夹中显示的图像与所显示的书籍相匹配。

我的代码有什么问题?

【问题讨论】:

定义“它不起作用”。它以什么方式不起作用?观察到的行为如何以及何时偏离预期行为? 当从列表中选择一个项目时,它不会显示/填充标签,它们只是保持空白。 发生这种情况时正在执行什么数据库查询?是否有任何记录被退回?我的第一个猜测是您可能正在重新设置Page_Load 上下拉列表的值,但如果没有看到该代码,我无法确定。另外,出于好奇,为什么要循环设置标签?他们只会显示最后一条记录。如果您只想查看最后一条记录,请仅选择该记录。循环遍历您将要忽略的内容是没有意义的。 您遇到了什么问题?您是否调试并检查过值? 页面加载代码是空的,里面什么都没有,我真的很菜鸟,所以嗯,是的,这就是我目前拥有的所有代码,当你说循环是 while(reader .Read()) 语句? 【参考方案1】:

问题是你的reader is null. 设置reader = SqlCommand.ExecuteReader()

例子:

reader = cmdReade.ExecuteReader(); 

【讨论】:

@Nirre 欢迎。请将其标记为您的答案。投票按钮下方有一个勾号。点击它接受它作为你的答案。【参考方案2】:

你错过了

reader =cmdSelect.ExecuteReader();  

【讨论】:

以上是关于DataReader + DropDownList ASP.NET 项目的主要内容,如果未能解决你的问题,请参考以下文章

DataReader

dataset 和 datareader对象有啥区别

为啥 DataTable 比 DataReader 快

DataReader:指定的强制转换无效 (Int32)

ADO.NET 四(DataReader)

寻找重置或清除 DataReader 的方法