我的datareader有行,但是我无法从datareader获取文本框的记录

时间:2014-09-12 11:42:39

标签: asp.net

任何人都可以告诉我我在哪里做错了。我正在尝试用c#自己开发一个小网站。我无法显示从datareader获取的记录。

{

    SqlConnection cone = new SqlConnection("User id=...;Password=;...");

    SqlCommand conecmd = new SqlCommand("select bankbalance from bank where bankpassword='" + txtboxbankpassword.Text + "'", cone);

    cone.Open();

    SqlDataReader drcone = conecmd.ExecuteReader();

    if (drcone.HasRows) // says it has row(s) i.e., Hasrows=true
    {

        while (drcone.Read()) // here its value is false
        {
            lblremainingbankbalance.Text = drcone["bankbalance"].ToString();
        }
        int a;
        a = Convert.ToInt32(lblremainingbankbalance.Text);


        lblmsg.Text = "Transaction successful.Please wait while we redirect you to mypage and your current " + bankstore + " accountbalance is " + a + "";
        Response.AddHeader("REFRESH", "5;URL=Mypage.aspx");
        txtboxbankpassword.Text = "";
    } else {
        lblmsg.Text = "Norecord(s)";
    }

}

2 个答案:

答案 0 :(得分:0)

尝试在SQL服务器中运行查询并查看它是否显示某些行,因为我没有看到代码中的任何错误也会修改文本框的文本,如下所示

  txtboxbankpassword.Text.Trim()

完成从datareader读取行后,也会关闭连接。

答案 1 :(得分:0)

你的情况很奇怪..如果drcone.HasRows为真drcone.Read()必须返回true ...最少一次..

您是否正在调试代码并将drcone.Read()添加到quickwatch或将其放入监视列表中?因为,它会在你的while循环之前运行方法Read()。下次当你调用Read()时(在你的while循环中),它将返回false ..

你得到一行,读者将读者与第一行(在whatchlist中)对齐,并在你的while循环中返回false并说“在这一行之后没有剩下的行”。

请参阅此链接以下文档:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.read.aspx

如果你只有一个单一的,读者“在位置-1”..在drcone之后。回复()(返回true)将位置设置为0(1和最后一行)..下次你调用drcone。 Read()它将返回false ..因为在此之后没有剩下的行(读取器位于0位置)