C# 如何使用会话用户计算购物车

C# 如何使用会话用户计算购物车,c#,mysql,asp.net,shopping-cart,C#,Mysql,Asp.net,Shopping Cart,我目前正在一个购物车项目上工作。我已经完成了购物车,但不知何故,我无法计算购物车,它显示为0。我已经检查用户的会话是否已被抓取。 这是我使用的方法: //check cart count public int getCartCount(string Username) { MySql.Data.MySqlClient.MySqlConnection msqlConnection = null; msqlConnection = new M

我目前正在一个购物车项目上工作。我已经完成了购物车,但不知何故,我无法计算购物车,它显示为0。我已经检查用户的会话是否已被抓取。

这是我使用的方法:

    //check cart count
    public int getCartCount(string Username)
    {

        MySql.Data.MySqlClient.MySqlConnection msqlConnection = null;
        msqlConnection = new MySql.Data.MySqlClient.MySqlConnection("server=localhost;User Id=root;password=rootPassw0rd;Persist Security Info=False;database=infosec;Integrated Security=False");
        MySql.Data.MySqlClient.MySqlCommand msqlCommand = new MySql.Data.MySqlClient.MySqlCommand();
        //define the connection used by the command object
        msqlCommand.Connection = msqlConnection;

        msqlCommand.CommandText = "SELECT COUNT(*) FROM shoppingcart WHERE Item_Id = @Username ";
        msqlCommand.Parameters.AddWithValue("@Username", _Username);

        msqlConnection.Open();

        string nofRow = "";

        MySql.Data.MySqlClient.MySqlDataReader msqlReader = msqlCommand.ExecuteReader();

        if (msqlReader.Read())
        {
            nofRow = msqlReader["COUNT(*)"].ToString();
        }

        msqlConnection.Close();
        msqlConnection.Close();
        msqlReader.Dispose();

        int cart = Convert.ToInt32(nofRow);


        return cart;
这是.axps页面的隐藏代码:

 //cart increase if there items added.
        if (Session["customer_Username"] == null)
        {
            cartCount.InnerText = "Cart (0)";
        }
        else
        {
            cartBLL cBLL = new cartBLL();
            string a = Session["customer_Username"].ToString();
            int count = cBLL.getCartCount(a);
            cartCount.InnerText = "Cart (" + count + ")";
        }
希望大家能帮我找出问题所在。 高级感谢。

更改此行:

nofRow = msqlReader["COUNT(*)"].ToString();

也许,它对您有所帮助。

更改此行:

nofRow = msqlReader["COUNT(*)"].ToString();

也许,它对您有所帮助。

更改此行:

nofRow = msqlReader["COUNT(*)"].ToString();

也许,它对您有所帮助。

更改此行:

nofRow = msqlReader["COUNT(*)"].ToString();

也许,它对您有所帮助。

好吧,也许
MySqlDataReader
在读取
“COUNT(*)”
列时会遇到问题(我还没有尝试过)

另一点,当您使用
msqlReader[“COUNT(*)”]
读取
“COUNT(*)”
列时,您的结果可以是
null
Convert.ToInt32(null)
生成
0
。(但这不太可能)

但更重要的是,在您的情况下,使用
MySqlDataReader
不是一个好选择。由于使用
COUNT(*)
获取行计数,因此返回查询中第一行的第一列是更好的选择

msqlCommand.CommandText = "SELECT COUNT(*) FROM shoppingcart WHERE Item_Id = @Username ";
msqlCommand.Parameters.AddWithValue("@Username", _Username);
int cart = (int)msqlCommand.ExecuteScalar();
还可以使用处置您的
MySqlConnection
MySqlCommand

using(MySqlConnection msqlConnection = new MySqlConnection(conString))
using(MySqlCommand msqlCommand = myCon.CreateCommand())
{
     //
}
好吧,也许
MySqlDataReader
在读取
“COUNT(*)”
列时会遇到问题(我还没有尝试过)

另一点,当您使用
msqlReader[“COUNT(*)”]
读取
“COUNT(*)”
列时,您的结果可以是
null
Convert.ToInt32(null)
生成
0
。(但这不太可能)

但更重要的是,在您的情况下,使用
MySqlDataReader
不是一个好选择。由于使用
COUNT(*)
获取行计数,因此返回查询中第一行的第一列是更好的选择

msqlCommand.CommandText = "SELECT COUNT(*) FROM shoppingcart WHERE Item_Id = @Username ";
msqlCommand.Parameters.AddWithValue("@Username", _Username);
int cart = (int)msqlCommand.ExecuteScalar();
还可以使用处置您的
MySqlConnection
MySqlCommand

using(MySqlConnection msqlConnection = new MySqlConnection(conString))
using(MySqlCommand msqlCommand = myCon.CreateCommand())
{
     //
}
好吧,也许
MySqlDataReader
在读取
“COUNT(*)”
列时会遇到问题(我还没有尝试过)

另一点,当您使用
msqlReader[“COUNT(*)”]
读取
“COUNT(*)”
列时,您的结果可以是
null
Convert.ToInt32(null)
生成
0
。(但这不太可能)

但更重要的是,在您的情况下,使用
MySqlDataReader
不是一个好选择。由于使用
COUNT(*)
获取行计数,因此返回查询中第一行的第一列是更好的选择

msqlCommand.CommandText = "SELECT COUNT(*) FROM shoppingcart WHERE Item_Id = @Username ";
msqlCommand.Parameters.AddWithValue("@Username", _Username);
int cart = (int)msqlCommand.ExecuteScalar();
还可以使用处置您的
MySqlConnection
MySqlCommand

using(MySqlConnection msqlConnection = new MySqlConnection(conString))
using(MySqlCommand msqlCommand = myCon.CreateCommand())
{
     //
}
好吧,也许
MySqlDataReader
在读取
“COUNT(*)”
列时会遇到问题(我还没有尝试过)

另一点,当您使用
msqlReader[“COUNT(*)”]
读取
“COUNT(*)”
列时,您的结果可以是
null
Convert.ToInt32(null)
生成
0
。(但这不太可能)

但更重要的是,在您的情况下,使用
MySqlDataReader
不是一个好选择。由于使用
COUNT(*)
获取行计数,因此返回查询中第一行的第一列是更好的选择

msqlCommand.CommandText = "SELECT COUNT(*) FROM shoppingcart WHERE Item_Id = @Username ";
msqlCommand.Parameters.AddWithValue("@Username", _Username);
int cart = (int)msqlCommand.ExecuteScalar();
还可以使用处置您的
MySqlConnection
MySqlCommand

using(MySqlConnection msqlConnection = new MySqlConnection(conString))
using(MySqlCommand msqlCommand = myCon.CreateCommand())
{
     //
}
几件事:

  • 验证
    string a=Session[“customer_Username”].ToString()
    返回用户名
  • Change
    nofRow=msqlReader[“COUNT(*)”].ToString()
    to
    nofRow=msqlReader[0].ToString()。查询中包含count aggregate函数
  • 验证
    从shoppingcart中选择COUNT(*),其中Item_Id=@Username
    确实拉入值@用户名需要替换为会话中的值
  • 这行
    msqlCommand.Parameters.AddWithValue(“@Username”,_Username)中似乎有输入错误<代码>\用户名
    应为
    用户名
    • 几件事:

      • 验证
        string a=Session[“customer_Username”].ToString()
        返回用户名
      • Change
        nofRow=msqlReader[“COUNT(*)”].ToString()
        to
        nofRow=msqlReader[0].ToString()。查询中包含count aggregate函数
      • 验证
        从shoppingcart中选择COUNT(*),其中Item_Id=@Username
        确实拉入值@用户名需要替换为会话中的值
      • 这行
        msqlCommand.Parameters.AddWithValue(“@Username”,_Username)中似乎有输入错误<代码>\用户名
        应为
        用户名
        • 几件事:

          • 验证
            string a=Session[“customer_Username”].ToString()
            返回用户名
          • Change
            nofRow=msqlReader[“COUNT(*)”].ToString()
            to
            nofRow=msqlReader[0].ToString()。查询中包含count aggregate函数
          • 验证
            从shoppingcart中选择COUNT(*),其中Item_Id=@Username
            确实拉入值@用户名需要替换为会话中的值
          • 这行
            msqlCommand.Parameters.AddWithValue(“@Username”,_Username)中似乎有输入错误<代码>\用户名
            应为
            用户名
            • 几件事:

              • 验证
                string a=Session[“customer_Username”].ToString()
                返回用户名
              • Change
                nofRow=msqlReader[“COUNT(*)”].ToString()
                to
                nofRow=msqlReader[0].ToString()。查询中包含count aggregate函数
              • 验证
                从shoppingcart中选择COUNT(*),其中Item_Id=@Username
                确实拉入值@用户名