2016-04-26 36 views
1

我想顯示的汽車經銷商豐田提供在GridView數據庫訪問的煩惱

,我得到了一個名爲Dealership.accdb 數據庫中的信息列表該表的名稱是表1 表有兩列經銷商汽車

但我一直收到此錯誤 「附加信息:沒有爲一個或多個所需參數給出的值。」

代碼工作正常,當我用它來顯示「經銷商」 不過這個名單,當我嘗試顯示由經銷商提供的汽車的名單就說明我上面

  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

它認爲豐田是一個字段,而不是字符串。你需要把它引號圍繞它 – BugFinder

+1

注意:引用可能會解決你的直接問題,但是如果你用用戶提供的值替換硬編碼的「豐田」值,[你需要使用參數化的SQL](http:// stackoverflow.com/q/35163361/87698)。 – Heinzi

回答

2
提到的錯誤

你應該正確引用您的變量:

SELECT Car FROM Table1 WHERE dealer = 'Toyota' 

相反的:

SELECT Car FROM Table1 WHERE dealer = Toyota 

現在它試圖匹配字段dealer與字段名爲Toyota,我認爲你的意思是檢查價值豐田。

你可以參數化查詢,所以你可以很容易在下一次得到BMW

SELECT Car FROM Table1 WHERE dealer = ? 

而在C#:

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

謝謝你的工作就像一個魅力! – Destiny

+0

@Destiny - 考慮按照預期標記答案和/或提高答案,如果它適合你。 – Yogi