在所选数据源上找不到名称为[数据库列]的字段或属性

时间:2014-03-12 17:35:11

标签: c# sql sql-server visual-studio-2010

在Visual Studio 2010中编程时出现这个奇怪的错误。我在SQL Server中有一个名为" tag_id"的列。它是我桌子的主键。如果我尝试使用" tag_id"在Visual Studio的任何引用中,而不是像这样

<asp:BoundField  DataField="tag_id" HeaderText="Current Tags"/>

或者

string sql = "INSERT INTO [tag_names] ([tag_id], [name], [created_by], [created_date]) VALUES ('{0}','{1}', '{2}', GETDATE())";

任何地方我都用它。我根据用途得到了各种不同的错误,但要点是它告诉我列tag_id不存在。但确实如此!让这段代码起作用的唯一方法是让我复制&#34; tag_id&#34;来自SQL Server,字面词&#34; tag_id&#34;并将其粘贴到Visual Studio中。虽然拼写完全相同,但除非我从SQL Server复制并粘贴它,否则它不会起作用。此外,如果我从Visual Studio复制并粘贴查询并将其放入SQL Server,它会说&#34; tag_id&#34;找不到。好像Visual Studio中的文本对此列不起作用。如果我只输入名称,所有其他列我都没有问题。

有没有人见过这个?

更新:

在阅读了Gordon和Grantly的建议后,我试图检查下划线。对于那一列,&#34; tag_id&#34;当我将它从Visual Studio复制并粘贴到记事本++时,它显示为&#34; tag_id&#34;。当我复制并粘贴&#34; tag_id&#34;从SQL Server出现,&#34; tagUS_id&#34;。即使我将它粘贴在这里,它也只是说&#34; tag_id&#34;我不得不手动添加&#34; US&#34;。但是在记事本++中它表示&#34;标记&#34;然后没有空格和字母&#34; US&#34;以黑色突出显示,然后&#34; id&#34;。

这只发生在此列中。带下划线的其他列工作正常。其他主键工作正常,其他外键工作正常。 hmmmmm?

2 个答案:

答案 0 :(得分:0)

我同意Gordon Linoff的观点,因为某些原因,下划线的实际ASCII / Unicode代码是不同的。尝试在文本文件(可能已经存在)中捕获VS 2010行,并将SQL查询保存到文件中。然后比较tag_id中所有字符的ASCII / Unicode值(尤其是下划线),你应该找到差异。如果它的普通ASCII可能有Hex值为5F,但你可能确实无意中在Visual Studio中使用了Unicode。

请参阅http://msdn.microsoft.com/en-us/library/xwy0e8f2%28v=vs.100%29.aspx

Visual Studio中的文本编辑器常规中有一个选项 - 自动检测没有签名的UTF-8编码,这可能会也可能不会导致这些差异。

请参阅此处的“另请”部分,了解下划线的替代Unicode字符: http://www.fileformat.info/info/unicode/char/5f/index.htm

(我会简单地评论,但声誉不够)

注意:Notepad ++免费且易于使用,使用TextFX转换功能显示转换为各种形式的文本(HEX 32会很有用)。我更喜欢VEdit

希望这有帮助

答案 1 :(得分:0)

这不是最好的解决方案,但在调查了很多选项后,我无法找到问题的根本原因。我刚刚删除了Microsoft SQL Server中的表并重新创建了它。之后一切都按预期工作。