SQL查询工作的管理工作室,但不是在C#
我有一个问题做一个查询我的软件...SQL查询工作的管理工作室,但不是在C#
我有我的建立查询的功能,然后执行它来填充一个gridview。但它一直抛出一个例外:“多部分标识符”“不能绑定”几列。
当我在SQL Management Studio中尝试查询时,它只是正常工作。我真的不明白。这是查询。
SELECT DISTINCT [NonConformite].[Numero],
CAST ([NonConformite].[Numero] AS varchar (255)) AS Champ1,
CAST ([NonConformiteDonneesComplementaires177_4].[Texte2] AS varchar (255)) AS Champ2,
CAST (NonConformite.dbo.[NonConformiteStatut].[Libelle] AS varchar (255)) AS Champ3,
CAST ([NonConformite].[Description] AS varchar (255)) AS Champ4 FROM [NonConformite].[dbo].[NonConformite]
LEFT JOIN NonConformite.dbo.[NonConformiteDonneesComplementaires] as NonConformiteDonneesComplementaires177_4
ON [NonConformite].[Numero] = [NonConformiteDonneesComplementaires177_4].[Numero]
LEFT JOIN NonConformite.dbo.[NonConformiteStatut]
ON [NonConformite].[CpteurStatut] = NonConformite.dbo.[NonConformiteStatut].[Cpteur]
我使用Visual Studio 2008,SQL Server 2008和ASP.NET C#在Windows 7 Pro上工作。
谢谢你的回答!
我会开始将查询分解为别名 - 看看是否有帮助;除非你是故意做跨数据库的工作(通常是一个坏主意),删除数据库标识符,并且只使用当前的DB:
SELECT DISTINCT nc.[Numero],
CAST (nc.[Numero] AS varchar (255)) AS Champ1,
CAST (dc.[Texte2] AS varchar (255)) AS Champ2,
CAST (st.[Libelle] AS varchar (255)) AS Champ3,
CAST (nc.[Description] AS varchar (255)) AS Champ4
FROM dbo.[NonConformite] nc
LEFT JOIN dbo.[NonConformiteDonneesComplementaires] dc
ON nc.[Numero] = dc.[Numero]
LEFT JOIN dbo.[NonConformiteStatut] st
ON nc.[CpteurStatut] = st.[Cpteur]
添加别名使程序更易于理解,您所做的方法有一些引发Exception的方法。根据@Marc Gravell的说法,跨数据库工作将成为此类问题的主要原因 – 2011-03-21 09:27:03
不幸的是,我必须做跨数据库工作,因为我正在将标准应用程序转换为Web应用程序。我必须使用相同的数据库。 – Pixayl 2011-03-21 09:32:03
@Pixayl - 不知道该声明如何使跨DB的工作成为必需... – 2011-03-21 09:33:37
尝试运行以下,并从底部向上删除评论直到您可以确定问题所在。
SELECT *
--DISTINCT [NonConformite].[Numero],
--CAST ([NonConformite].[Numero] AS varchar (255)) AS Champ1,
--CAST ([NonConformiteDonneesComplementaires177_4].[Texte2] AS varchar (255)) AS Champ2,
--CAST (NonConformite.dbo.[NonConformiteStatut].[Libelle] AS varchar (255)) AS Champ3,
--CAST ([NonConformite].[Description] AS varchar (255)) AS Champ4
FROM [NonConformite].[dbo].[NonConformite]
-- LEFT JOIN NonConformite.dbo.[NonConformiteDonneesComplementaires] as NonConformiteDonneesComplementaires177_4
ON [NonConformite].[Numero] = [NonConformiteDonneesComplementaires177_4].[Numero]
-- LEFT JOIN NonConformite.dbo.[NonConformiteStatut]
ON [NonConformite].[CpteurStatut] = NonConformite.dbo.[NonConformiteStatut].[Cpteur]
这是非常难以阅读......你知道你可以使用别名来帮助使查询健全,是吗? – 2011-03-21 09:17:00
您可以尝试使用此查询创建过程,并尝试从代码执行过程。 – buda 2011-03-21 09:25:32