繁体   English   中英

必须声明标量变量“ @ASIN”

[英]Must declare the scalar variable “@ASIN”

我不明白该错误信息。 标量变量意味着什么? @ASIN值应存储在为GetByAsin方法创建的id变量中。

//Gets one Music Detail
public MusicDescriptionModel GetByAsin(string id)
{
    using (IDbConnection db = connection)
    {
        string sql = "select ASIN, Title, Artist, Price, ReleaseDate,NumberDisks,label,DetailPageURL, Review" +
            "FROM tblDescription WHERE id = @ASIN";
        //need to parameterize ID to avoid sql injection attacks.
        MusicDescriptionModel musicdesc = db.Query<MusicDescriptionModel>(sql, new { id }).SingleOrDefault();
        return musicdesc;
    }
}

您尚未传递用于Dapper绑定到@ASIN的变量。 尝试:

MusicDescriptionModel musicdesc
  = db.Query<MusicDescriptionModel>(sql, new { ASIN = id }).SingleOrDefault();

或尝试:

 string sql = "select ASIN, Title, Artist, Price, ReleaseDate,NumberDisks,label,DetailPageURL, Review" +  
                       "FROM tblDescription WHERE id = @Id";

您不能使用其他名称,并且期望它为您神奇地排列它们。 他们需要匹配。

string sql = "select ASIN, Title, Artist, Price, ReleaseDate,NumberDisks,label,DetailPageURL, Review" +  
                       "FROM tblDescription WHERE ASIN = @ASINSqlParam";
        //need to parameterize ID to avoid sql injection attacks.
        MusicDescriptionModel musicdesc = db.Query<MusicDescriptionModel>(sql, new { ASINSqlParam = id }).SingleOrDefault();

应该做到的。

这里的文档可能会有所帮助。

问题出在我的where语句中,我需要使标量变量@id WHERE ASIN = @id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM