C# SQL查询在c中不起作用#

C# SQL查询在c中不起作用#,c#,sql,sql-server-2008,C#,Sql,Sql Server 2008,当我在SQL Management studio中运行下面的查询时,它运行得非常出色 当我在c#中运行它时,结果没有行(只有标题)-为什么? 我已经一步一步地完成了代码。只返回标题。没有记录。 注意:Query2被定义为SQL查询 SQL管理工作室查询-工作 SELECT * FROM [TraceData].[dbo].[MachineLog2] WHERE [MachineFailReason] not like 'Passed' AND Time

当我在SQL Management studio中运行下面的查询时,它运行得非常出色

当我在c#中运行它时,结果没有行(只有标题)-为什么? 我已经一步一步地完成了代码。只返回标题。没有记录。 注意:Query2被定义为SQL查询

SQL管理工作室查询-工作

SELECT 
    * 
FROM 
    [TraceData].[dbo].[MachineLog2] 
WHERE 
    [MachineFailReason] not like 'Passed' 
    AND Timestamp  >= CAST(GETDATE()-1 AS DATETIME) + CAST('04:00:00' AS DATETIME)  
ORDER BY Timestamp DESC
C#代码-不起作用

SqlConnection conn2 = new SqlConnection(connectionString);  
string Query2 = @ConfigurationManager.AppSettings["Query2"];  
conn2.Open();

SqlCommand cmd2 = new SqlCommand(Query, conn2); 
SqlDataReader dr2 = cmd2.ExecuteReader();

可能是输入错误,但您声明
Query2
并使用
Query

string **Query2** = @ConfigurationManager.AppSettings["Query2"];  
conn2.Open();

SqlCommand cmd2 = new SqlCommand(**Query**, conn2); 

通过将查询放在存储过程中并使用C#运行存储过程,可以更好地调试或完全解决此类问题

因此,创建查询的存储过程如下所示

USE TraceData;
GO
CREATE PROCEDURE MyWrappedQuery

AS 
BEGIN

SELECT 
    * 
FROM 
    [TraceData].[dbo].[MachineLog2] 
WHERE 
    [MachineFailReason] not like 'Passed' 
    AND Timestamp  >= CAST(GETDATE()-1 AS DATETIME) + CAST('04:00:00' AS DATETIME)  
ORDER BY Timestamp DESC

END
在C#中,您可以运行查询“exec MyWrappedQuery”或通过ado.net运行SP


尝试并回答这个问题,如果查询在SQL server中工作,而不是通过C#工作,那么它应该可以工作

不同的数据库?当你说不工作-你的意思是它不返回任何记录?您是否仔细检查了代码以确保正确设置和加载了AppSettings?您如何知道它不起作用?你调用过dr2.Read()吗?顺便说一句,不像“已通过”应该是“已通过”@Prescott是的,我已经浏览了代码。“无工作”意味着,如果给定的查询与SQL management studio中的查询结果相同,则返回0条记录。我没有在服务器上创建存储过程的权限。您是正确的-这就是问题所在-我认为在c中嵌入SQL命令是一个问题#