2012-02-02 84 views
3

我在C#写了一个小程序来跟踪客户和作业的错误解析查询的SQL Server CE,但我得到一个错误有/ VS 2010的本地数据库

“有一个错误解析查询。[令牌行号= 1,令牌 行偏移= 38,令牌在错误=名称]

我使用SQL Server CE .sdf数据库

public static List<string> ListDates(string clientname) 
    { 
     List<string> date = new List<string>(); 
     string myName = clientname; 
     using (SqlCeCommand cmd = conn.CreateCommand()) 
     { 
      conn.Open(); 
      cmd.CommandText = @"SELECT * FROM FarmJobs WHERE Name = ?Name;"; 
      cmd.Parameters.AddWithValue("Name", myName); 
      SqlCeDataReader Reader = cmd.ExecuteReader(); 
      while (Reader.Read()) 
      { 
       for (int i = 0; i < Reader.FieldCount; i++) 
       { 
        date.Add(Reader["DateSeviceStarted"].ToString()); 
       } 
      } 
     } 
     return date; 
    } 

我研究了错误很多,而且似乎这个错误是相当模糊的

回答

1

已经使用了“?”在这里你需要一个“@Name参数:

cmd.CommandText = "SELECT * FROM FarmJobs WHERE Name = @Name"; 
    cmd.Parameters.AddWithValue("@Name", myName); 

[旁注 :我会建议使用明确的列列表而不是SELECT *]