C# DataSet TableAdapter查询无法使用SQL Server CE的字符串参数

C# DataSet TableAdapter查询无法使用SQL Server CE的字符串参数,c#,sql-server-ce,sql-server-ce-3.5,C#,Sql Server Ce,Sql Server Ce 3.5,我正在开发一个SQL Server CE 3.5数据库应用程序,并使用DataSet/TableAdapter/Query从表中检索记录。当我创建使用表和int列的主键的查询时,它与一个参数配合得很好。其SQL是SELECT ID、Name、Birthdate FROM People,其中ID=@ID。这会在表适配器上生成一个方法,使用一个int参数,效果非常好。现在,我在Name字段上设置了一个唯一的索引,我想在TableAdapter上有一个类似的方法,名为GetByName,它通过Name

我正在开发一个SQL Server CE 3.5数据库应用程序,并使用DataSet/TableAdapter/Query从表中检索记录。当我创建使用表和int列的主键的查询时,它与一个参数配合得很好。其SQL是SELECT ID、Name、Birthdate FROM People,其中ID=@ID。这会在表适配器上生成一个方法,使用一个int参数,效果非常好。现在,我在Name字段上设置了一个唯一的索引,我想在TableAdapter上有一个类似的方法,名为GetByName,它通过Name字段以类似的方式检索记录SELECT ID,Name,来自姓名=@Name的人员的生日,因此我尝试在TableAdapter上创建此查询,遇到的第一个问题是在尝试使用此SQL创建查询时生成的错误。它告诉我从DbType对象到SQL Server Compact数据类型不存在映射。因此,我将参数属性中的DbType从Object更改为String。现在,当我调用该方法时,我没有得到任何数据。我尝试只传递直线字符串值,如: 字符串sName=Bob; myAdapter.GetByNameName

我已尝试使用单引号传入值: 字符串sName='Bob'; myAdapter.GetByNameName

在这两种情况下都不会返回数据。不会引发任何错误,但不会返回任何数据

我尝试将查询中的SQL修改为: 从姓名=“@Name”的人员中选择ID、姓名和出生日期 仍然没有数据

我尝试将所有字段名都用方括号括起来,并在WHERE子句中完全限定名称列 从[People]中选择[ID]、[Name]、[Birthdate],其中[People]。[Name]=@Name 仍然没有数据


我不知道该怎么做。我确信这是必须能够做到的,但就我个人而言,我不知道该怎么做。

C代码是什么样子的?ron。我包括了对适配器的GetByName方法的调用。GetByID方法的工作原理完全相同,只是我传递了一个int值。您还希望看到其他哪些代码?