2017-02-17 4 views
0

Ich verstehe nicht, die Fehlermeldung. Was bedeutet es durch skalare Variable? Der @ASIN-Wert sollte in der ID-Variablen gespeichert werden, die ich für die GetByAsin-Methode erstellt habe.muss die skalare Variable „@ASIN“ erklären

//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

wie wird @ASIN in der SQL-Zeichenfolge festgelegt zu werden? – Jake

+0

es in id = @ASIN –

+0

@mason schlug mich zu ihm. – Jake

Antwort

2

Sie haben keine Variable für Dapper übergeben, die an @ASIN bindet. Versuchen:

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

oder versuchen:

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

Sie nicht einen anderen Namen verwenden können, und erwarten, dass es auf magische Weise sie für Sie ausrichten. Sie müssen übereinstimmen.

+0

Ich versuchte es, aber es gibt mir eine Fehlermeldung, id eine ungültige Spalte ist –

+0

@TimothyWong Nun schauen 'tblDescription' dann und sehen, welche Spalte Sie Filterung sollten. Ich habe keinen Zugriff auf Ihre Datenbank, um zu sehen, welche Spalten in Ihren Tabellen definiert sind. – mason

+0

Ich versuche, die Zeichenfolgen-ID, die ich übergeben möchte, gleich zu ASIN zu machen. Deshalb wird id = @ASIN in meine where-Anweisung geschrieben. Das Problem ist: 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(); 

Sollte den Trick tun.

Docs here helfen kann.

0

Das Problem war in meinem wo Aussage ich die Skalarvariable @id machen müssen WHERE ASIN = @id

Verwandte Themen