过去几天我遇到了问题。我将简要解释一下我的所作所为。 我在数据库中创建了一个名为“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();
}
答案 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();