2016-04-26 6 views
1

Ich versuche, um die Liste der Autos anzuzeigen, die von den HändlernToyota in einer GridviewDatenbank Zugriff Probleme

vorgesehen ist erhalte ich die Informationen aus einer Datenbank Dealership.accdb Die angerufene Name der Tabelle ist Tabelle 1 die Tabelle hat zwei Spalten Händler und Auto

Aber ich bekomme immer diesen Fehler "Zusätzliche Informationen: Kein Wert für einen oder mehrere erforderliche Parameter angegeben."

Der Code funktioniert gut, wenn ich es verwenden, um die Liste der „Händler“ anzuzeigen Aber wenn ich versuche, um die Liste der Autos durch den Händler zeigt es den Fehler, den ich oben

  using System; 
      using System.Collections.Generic; 
      using System.Linq; 
      using System.Web; 
      using System.Web.UI; 
      using System.Web.UI.WebControls; 
      using System.Data; 
      using System.Data.OleDb; 

      public partial class toyota : System.Web.UI.Page 
      { 
      protected void Page_Load(object sender, EventArgs e) 
      { 
       OleDbConnection connect = new OleDbConnection(); 

       connect.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0; 
       Data Source=C:\Users\Student\Documents\Visual Studio 2013\WebSites\WebSite1\Dealership.accdb"; 
       connect.Open(); 

       OleDbCommand cmd = new OleDbCommand("SELECT Car FROM Table1 WHERE dealer = Toyota", connect); 

       OleDbDataAdapter adapter = new OleDbDataAdapter(cmd); 

       DataTable dt = new DataTable(); 

       adapter.Fill(dt); 

       GridView1.DataSource = dt; 
       GridView1.DataBind(); 
      } 
     } 
+1

es denkt Toyota ein Feld ist, kein String . – BugFinder

+1

Hinweis: Zitat könnte Ihr unmittelbares Problem beheben, aber sollten Sie jemals den hartcodierten "Toyota" -Wert durch einen vom Benutzer angegebenen Wert ersetzen, [müssen Sie parametrisiertes SQL verwenden] (http: // stackoverflow.com/q/35163361/87698). – Heinzi

Antwort

2
erwähnt versehen anzuzeigen

Sie sollten richtig Ihre Variablen zitieren:

SELECT Car FROM Table1 WHERE dealer = 'Toyota' 

Statt:

SELECT Car FROM Table1 WHERE dealer = Toyota 

Jetzt wird versucht, das Feld dealer mit dem Feld Toyota übereinstimmen, wo ich denke, dass Sie nach dem Wert Toyota suchen wollten.

Sie können Ihre Anfrage parametrieren, so können Sie BMW nächste Mal leicht zu bekommen:

SELECT Car FROM Table1 WHERE dealer = ? 

Und in C#:

OleDbCommand cmd = new OleDbCommand("SELECT Car FROM Table1 WHERE dealer = ?", connect); 
cmd.Parameters.AddWithValue("?", "Toyota"); 
+0

Vielen Dank, wie Sie gearbeitet haben! – Destiny

+0

@Destiny - Erwägen Sie, die Antwort wie erwartet zu markieren und/oder sie zu aktualisieren, wenn sie für Sie funktioniert. – Yogi