Response.write只显示数据库中的第一条记录(this.session.sessionid)

时间:2014-11-27 13:46:12

标签: asp.net session this sessionid

过去几天我遇到了问题。我将简要解释一下我的所作所为。 我在数据库中创建了一个名为“Cart”的表。此购物车币:ClientID,Artical number和quantity。在ClientID中,存储了session.sessionID。在Artical中只是一个像1012这样的数字。数量上有一个像1或3的数字。

我想要的是使用用户的session.session id检索所有记录。 它在页面中工作,但只显示购物车表中类似4-5记录的第一条记录。我认为我找到了它this.session.sessionid的问题,当它找到一个时,它看起来就不再那样了。

我试图遍历会话所在的查询。但它不会让我循环,因为它不知道for?即使我将整个查询循环到它之外:for (int i = 0; i < sessies.Length; i++)它会显示更多记录..但它们都是第一个记录..我知道这是一个愚蠢的尝试,但我总是可以尝试..

在互联网上寻找但无法找到解决方案。

希望很快得到某人的回复。这将是非常感激的。

使用以下代码:

using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["GarageConnectionString"].ToString()))
    {
        string sessions = this.Session.SessionID;



            SqlCommand cmd = new SqlCommand("SELECT * FROM cart where ClientID='" + sessions + "'", cn);

            cn.Open();
            SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            rdr.Read();


            TextBox1.Text = rdr[2].ToString();


            Response.Write("<br>" + ("Sessie id "+rdr[1].ToString())); 
            Response.Write("<br>" + ("Artikel nummer "+rdr[2].ToString())); 
            Response.Write("<br>" + ("Aantal "+rdr[3].ToString())); 

            cn.Close();

    }

4 个答案:

答案 0 :(得分:0)

你应该遍历datareader:ie:

while (rdr .Read())
{
    Console.WriteLine("{0}\t{1}", rdr .GetInt32(0),
                    rdr .GetString(1));
}

答案 1 :(得分:0)

SqlDataReader.Read()的每次调用都会获得一行,除非在返回false时没有更多行。

所以你需要循环来获取所有行:

while (rdr.Read()) {
  // Use rdr methods to access the values from the current row.
}

答案 2 :(得分:0)

SqlDataReader前进到集合中的 next 记录:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.read%28v=vs.110%29.aspx

在循环中调用Read(),如下所示:

using (SqlConnection cn = newSqlConnection(ConfigurationManager.ConnectionStrings["GarageConnectionString"].ToString()))
{
    string sessions = this.Session.SessionID;



        SqlCommand cmd = new SqlCommand("SELECT * FROM cart where ClientID='" + sessions + "'", cn);

        cn.Open();
        SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

        while (rdr.Read())
        {
           TextBox1.Text = rdr[2].ToString();


           Response.Write("<br>" + ("Sessie id "+rdr[1].ToString())); 
           Response.Write("<br>" + ("Artikel nummer "+rdr[2].ToString())); 
           Response.Write("<br>" + ("Aantal "+rdr[3].ToString())); 
        }

        cn.Close();

}

答案 3 :(得分:0)

使用 While循环 - 示例

        if (rdr .HasRows)
        {
            while (rdr .Read())
            {
                Console.WriteLine("{0}\t{1}", rdr .GetInt32(0),
                    rdr .GetString(1));
            }
        }
        else
        {
            Console.WriteLine("No rows found.");
        }
        rdr .Close();