DataSet TableAdapter查询不使用SQL Server CE的字符串参数

时间:2014-12-17 17:45:24

标签: 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 WHERE ID=@ID。这会在表适配器上生成一个带有单个int参数的方法,并且效果很好。现在,我在Name字段上设置了一个唯一的索引,我希望在TableAdapter上有一个名为GetByName的类似方法,它以类似的方式SELECT ID,Name,Birthdate FROM People WHERE Name=@Name通过Name字段检索记录,所以我尝试在TableAdapter和我遇到的第一个问题是当我尝试使用此SQL创建Query时生成的错误。它告诉我“从DbType对象到SQL Server Compact数据类型不存在映射”。所以我将参数属性中的DbType从Object更改为String。现在,当我调用该方法时,我得不到任何数据。我试过传递直接字符串值,如: string sName = "Bob"; myAdapter.GetByName(sName);

我尝试用单引号传递值: string sName = "'Bob'"; myAdapter.GetByName(sName);

在任何一种情况下都不会返回任何数据。不会抛出任何错误,但不会返回任何数据。

我尝试将Query中的SQL修改为: SELECT ID,Name,Birthdate FROM People WHERE Name='@Name' 仍然没有数据。

我尝试将所有字段名称包装在方括号中,并完全限定WHERE子句中的Name列 SELECT [ID],[Name],[Birthdate] FROM [People] WHERE [People].[Name]=@Name 仍然没有数据。

不确定如何使这项工作。我确信它必须能够完成,但对于我的生活,我无法弄清楚如何。

0 个答案:

没有答案