2017-02-17 23 views
0

エラーメッセージはわかりません。スカラー変数ではどういうことが起こりますか? @ASINの値は、GetByAsinメソッド用に作成したid変数に格納する必要があります。スカラー変数 "@ASIN"を宣言しなければなりません

//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; 
     } 
    } 
+0

を@idたWHERE? – Jake

+0

それはid = @ASIN –

+0

です@masonは私にそれを打つ。 – Jake

答えて

2

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"; 

あなたは別の名前を使用し、それは魔法のようにあなたのためにそれらを並べることを期待することはできません。彼らは一致する必要があります。

+0

私はそれを試してみましたが、それは私のidは –

+0

@TimothyWongさて、次にtblDescription' 'を見て、あなたは上のフィルタリングすべきかの列を参照無効な列であるというエラーメッセージを与えています。あなたのテーブルにどの列が定義されているかを知るためにデータベースにアクセスすることはできません。 – mason

+0

ASINと同じに渡す文字列IDを作成しようとしています。そのため、where文にput id = @ASINが設定されています。問題は次のとおりです。MusicDescriptionModel musicdesc = db.Query (sql、new {id})。SingleOrDefault(); –

0
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(); 

このトリックを行う必要があります。

文書hereが参考になる場合があります。私のところの文 私はスカラ変数を作成する必要があるが、 を@idに

0

問題は、ASINは=あなたのSQL文字列に@ASIN設定取得する方法

関連する問題