C# 在设计器中设置mySQL参数查询

C# 在设计器中设置mySQL参数查询,c#,mysql,sql,visual-studio,wampserver,C#,Mysql,Sql,Visual Studio,Wampserver,我正在尝试使用C#在Visual Studio 2017的数据集设计器中设置查询 我使用WAMP作为我的DB服务器,当我从WAMP中执行以下操作时,我得到了预期的结果 SELECT * FROM `product` NATURAL JOIN `contractproduct` WHERE ContractID = 1001 事实上,如果我在VisualStudio的设计器中执行完全相同的行,我会得到相同的结果。问题是当我尝试按如下方式创建查询时: SELECT * FROM `product

我正在尝试使用C#在Visual Studio 2017的数据集设计器中设置查询

我使用WAMP作为我的DB服务器,当我从WAMP中执行以下操作时,我得到了预期的结果

SELECT * FROM `product` NATURAL JOIN `contractproduct` WHERE ContractID = 1001
事实上,如果我在VisualStudio的设计器中执行完全相同的行,我会得到相同的结果。问题是当我尝试按如下方式创建查询时:

SELECT * FROM `product` NATURAL JOIN `contractproduct` WHERE ContractID =@ID
VS给了我一个错误:“SQL文本无法在网格窗格和图表窗格中表示。”尽管我对其他查询使用了=@VAR语法。SQL一开始不是我的强项,但我真的不明白为什么它能在设计师的引擎中工作,但后来我抱怨道。感谢您的帮助

编辑:答案是使用内部联接:

SELECT *
FROM product p
INNER JOIN contractproduct c ON p.ProductID = c.ProductID
WHERE c.ContractID =@id

这个问题的答案是使用内部联接

SELECT *
FROM product p
INNER JOIN contractproduct c ON p.ProductID = c.ProductID
WHERE c.ContractID =@id

这在Visual Studio中非常有效,正如上面的评论所述,这是一种比自然加入更好的做法。

我不知道是删除此内容还是将其留给其他人--这可能和我一样愚蠢。显然,VisualStudio不喜欢自然连接。内部连接起了作用。无论如何,自然连接是一种不好的做法。将来的表更改如果添加另一个具有匹配名称的列,可能会造成严重破坏。请将您的答案作为实际答案发布。