2011-12-24 56 views
0

我有这个非常简单的麻烦,我似乎无法克服。Sql压缩版 - 简单的选择语句不起作用

我试图执行该代码行与SQL CE:

SqlCeCommand comSelect = new SqlCeCommand("SELECT * FROM Items WHERE barcode = '@barcode'", conn); 
comSelect.Parameters.Add(new SqlCeParameter("barcode", System.Data.SqlDbType.NVarChar, 100)).Value = barC; 

出于某种奇怪的原因 - 它总是回来称为空即没有找到结果。如果我把参数值由自己在查询字符串,像这样:

SELECT * FROM Items WHERE barcode = '123ABC' 

然后它工作完美。我会补充说这个列是一个NVarChar。

任何想法,为什么这不工作?

+0

如果你把你的参数为单引号(''@ barcode''),那么这真是一个**字符串字面** - 不是了参数。因此,您的SELECT正在搜索“条形码”列中包含值“@ barcode”的项目 - 这显然不是您想要的。 – 2011-12-24 12:22:20

回答

2

尝试使用这样的:

"SELECT * FROM Items WHERE barcode = @barcode" 

而不是你拥有什么。请注意0​​中缺少引号。

+0

谢谢!我想,当你声明一个参数为NVarChar类型时,它将自己的引号放在那里,所以当我把它放在时,语句是:“SELECT ... WHERE barcode =''123ABC'' – 2011-12-24 12:52:23

6

尝试:

new SqlCeCommand("SELECT * FROM Items WHERE barcode = @barcode", conn); 
comSelect.Parameters.Add(new SqlCeParameter("@barcode", System.Data.SqlDbType.NVarChar, 100)).Value = barC; 
+0

没有帮助: ( – 2011-12-24 12:24:22

+0

对不起,我错过了缺乏引号。你的回答也不错 – 2011-12-24 14:57:12