2016-04-26 39 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