C# SQL查询在c中不起作用#
当我在SQL Management studio中运行下面的查询时,它运行得非常出色 当我在c#中运行它时,结果没有行(只有标题)-为什么? 我已经一步一步地完成了代码。只返回标题。没有记录。 注意:Query2被定义为SQL查询 SQL管理工作室查询-工作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
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命令是一个问题#