如何在 ASP.NET Core的参数化方法中声明标量变量?

How to declare scalar variable in parameterized method in ASP.NET Core?

提问人:User_K47 提问时间:10/24/2023 最后编辑:CharliefaceUser_K47 更新时间:10/24/2023 访问量:34

问:

我想使用参数化方法获取值,但我收到此错误

必须声明标量变量 @Category

我不知道在下面的代码中在哪里以及如何声明标量变量。

查看我尝试过的代码

[Route("TotalValue")]
[HttpGet]
public decimal TotalValue()
{
    var query = "Select * from OrderDetail where Category = @Category";
    string sqlDataSource = _configuration.GetConnectionString("DefaultConnection");
    decimal total = 0;

    using (SqlConnection con = new SqlConnection(sqlDataSource))
    {
        con.Open();

        using (SqlCommand cmd = new SqlCommand(query, con))
        {
            using (SqlDataReader dr = cmd.ExecuteReader())
            {
                if (dr.Read())
                {
                    total = dr.GetDecimal(0); 
                }
            }
        }

        con.Close();
    }

    return total;
}
sql-server ado.net sqlclient

评论

0赞 Charlieface 10/24/2023
这回答了你的问题吗?将参数传递给 SQLCommand 的最佳方法是什么?

答:

0赞 Neil W 10/24/2023 #1

你快到了。

创建命令后,将 @Category 参数添加到命令的参数集合中:

[Route("TotalValue")]
[HttpGet]
public decimal TotalValue()
{
    var query = "Select * from OrderDetail where Category = @Category";
    string sqlDataSource = _configuration.GetConnectionString("DefaultConnection");
    decimal total = 0;

    // If a string (amend for other data type)
    string categoryToFind = "My Category To Search For";

    using (SqlConnection con = new SqlConnection(sqlDataSource))
    {
        con.Open();
        using (SqlCommand cmd = new SqlCommand(query, con))
        {
            cmd.Parameters.AddWithValue("@Category", categoryToFind);

            using (SqlDataReader dr = cmd.ExecuteReader())
            {
                if (dr.Read())
                {
                    total = dr.GetDecimal(0); 
                }
            }
        }
        con.Close();
    }

    return total;
}

评论

3赞 Stuck at 1337 10/24/2023
但是,不要使用 .使用起来要好得多,然后你可以内联其他重要部分,如数据类型、小数位数、精度等,而不是让 C# 猜测。AddWithValueAdd
0赞 User_K47 10/25/2023
我收到此错误“数据为空。不能对 Null 值调用此方法或属性。