gpt4 book ai didi

c# - 存储过程给我错误 c#

转载 作者:太空宇宙 更新时间:2023-11-03 13:22:37 25 4
gpt4 key购买 nike

我正在使用 sql 存储过程来获取数据列表,但目前我收到一个错误,因为 System.Data.dll 中发生了类型为“System.StackOverflowException”的未处理异常,这程序应该能够获取今天日期的数据。这是我的模态:

这是我的代码;

   public List<ClassName> GetStaffs()
{
List<ClassName> staff = new List<ClassName>();

SqlConnection connection = new SqlConnection(ConfigurationManager.etc...);

SqlCommand mycomm = new SqlCommand("ProcedureName",connection);
mycomm.CommandType = CommandType.StoredProcedure;
mycomm.Parameters.AddWithValue("dates",DateTime.Today);
SqlDataReader reader;
connection.Open();
reader = mycomm.ExecuteReader();
connection.Close();
return staff;
}

在这一行中,我收到错误 reader = mycomm.ExecuteReader(); 我也不确定代码是否会为我提供我请求的员工数据列表。有人可以指导我正确的方向吗?这是我用过的例子 link

SQL 2008 中的存储过程

    USE databaseName
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[ProcedureName] @dates Datetime

AS
BEGIN
SET NOCOUNT ON;

SELECT ID, fName, sName, dates,
COUNT(CASE TotalStaff WHEN 0 THEN 0 ELSE NULL END) AS TotalStaffs,
FROM dbo.DatabaseName WHERE dates>= @dates
GROUP BY ID, fName, sName, dates

END

更新我设法解决了错误,但我没有从存储过程中获取任何数据。

最佳答案

好的,在您的 SP 中,我通过在日期中转换 “日期” 列忽略了 where 条件中的时间部分。所以现在你的 SP 看起来像这样 -

ALTER PROCEDURE [dbo].[ProcedureName] 
@dates Datetime

AS
BEGIN
SET NOCOUNT ON;

SELECT ID, fName, sName, dates,
COUNT(CASE TotalStaff WHEN 0 THEN 0 ELSE NULL END) AS TotalStaffs,
FROM dbo.DatabaseName WHERE CAST(dates As Date) >= CAST(@dates As Date)
GROUP BY ID, fName, sName, dates

END

并且在您的 C# 代码中,您还没有在列表中添加对象。所以这是修改后的代码。

public List<ClassName> GetStaffs()
{
List<ClassName> staff = new List<ClassName>();

SqlConnection connection = new SqlConnection(ConfigurationManager.etc...);

SqlCommand mycomm = new SqlCommand("ProcedureName",connection);
mycomm.CommandType = CommandType.StoredProcedure;
mycomm.Parameters.AddWithValue("dates",DateTime.Today);
SqlDataReader reader;
connection.Open();
reader = mycomm.ExecuteReader();
while (reader.Read())
{
staff.Add(new ClassName { fName = Convert.ToString(reader["fName"]), sName = Convert.ToString(reader["sName"]), ..so-on });
}
connection.Close();
return staff;
}

希望这对你有帮助...

关于c# - 存储过程给我错误 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23651388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com