控制器内部的sql查询返回null

时间:2019-03-21 20:55:10

标签: c# sql-server asp.net-mvc

我尝试先生成一个值,然后尝试将该值传递给SQL查询,但是我的查询返回null。我尝试调试我的代码,我在myvalue变量中有值。

我不确定是否可以按照我的方式完成。可以将下面的值传递给我吗?如果没有任何建议,请。

public ActionResult Index(View model)
{
    using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["DB_MYTABLE_CONNECTION_STRING"].ConnectionString))
    {
        var myvalue = MyUtil.GenerateKey(model.Name, model.phonenumber);

        con.Open();
        string query = "select count(*) from customer where key = @myvalue";


        using (var cmd = new SqlCommand(query, con))
        {
            int rowsAmount = (int)cmd.ExecuteScalar();
        }
    }
}

2 个答案:

答案 0 :(得分:1)

您需要将参数名称和值传递给SqlCommand:

public ActionResult Index(View model)
{
    using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["DB_MYTABLE_CONNECTION_STRING"].ConnectionString))
    {

        var myvalue = MyUtil.GenerateKey(model.Name, model.phonenumber);

        con.Open();
        string query = "select count(*) from customer where  key=@myvalue";

        using (var cmd = new SqlCommand(query, con))
        {
            cmd.Parameters.Add("@myvalue", myvalue);
            int rowsAmount = (int)cmd.ExecuteScalar();
        }
    }
}

答案 1 :(得分:0)

ActionResult索引(查看模型) 说您正在将模型传递给控制器​​-如果模型中包含数据,则应在模型中进行查找,并将结果作为视图模型的一部分

我的代码中的数据访问通常是通过Models中其类中的数据库进行的-击中数据库的任何内容通常都在数据库的存储过程中-以避免SQL注入。创建视图模型以传递正确的数据,以使控制器传递到视图。

在数据库中测试您存储的proc,然后在数据访问层中使用,并将其存储到Model类中,以将其注入到控制器中。