Sql server SQL返回脚本未返回数据
我有一个不返回数据的Sql Server脚本。我的.net变量返回为null。我有其他脚本以同样的方式构建,它们返回的很好Sql server SQL返回脚本未返回数据,sql-server,asp.net-core,Sql Server,Asp.net Core,我有一个不返回数据的Sql Server脚本。我的.net变量返回为null。我有其他脚本以同样的方式构建,它们返回的很好 public List<float> FlowerTotal { get; set; } public List<float> TrimTotal { get; set; } public List<float> WasteTotal { get; set; } public List<int>
public List<float> FlowerTotal { get; set; }
public List<float> TrimTotal { get; set; }
public List<float> WasteTotal { get; set; }
public List<int> result = new List<int>();
public List<List<float>> resultTotal = new List<List<float>>();
public List<List<float>> TotalReturns(int FileID)
{
using (SqlConnection myConn = new SqlConnection(cs))
{
SqlCommand returnTotal = new SqlCommand();
returnTotal.Connection = myConn;
myConn.Open();
returnTotal.Parameters.AddWithValue("@fileID", FileID);
returnTotal.CommandText = ("[spHarvestedCannabisTotalReturn]");
returnTotal.CommandType = CommandType.StoredProcedure;
using (SqlDataReader reader = returnTotal.ExecuteReader())
{
while (reader.Read())
{
if(FlowerTotal != null)
{
FlowerTotal.Add(reader.GetFloat(0));
TrimTotal.Add(reader.GetFloat(1));
WasteTotal.Add(reader.GetFloat(2));
}
}
resultTotal.Add(FlowerTotal);
resultTotal.Add(TrimTotal);
resultTotal.Add(WasteTotal);
reader.Close();
}
returnTotal.Cancel();
myConn.Close();
return resultTotal;
}
}
我下面的变量返回为空,我做错了什么?在正确方向上的任何帮助都将是巨大的
FlowerTotal.Add(reader.GetFloat(0));
TrimTotal.Add(reader.GetFloat(1));
WasteTotal.Add(reader.GetFloat(2));
如果(FlowerTotal!=null)阻止将结果添加到列表中,则有一行
if(FlowerTotal!=null)
。确保所有列表都已初始化
我认为您可以删除sp并将其简化为:
[spHarvestedCannabisTotalReturn]
@fileID int
AS
BEGIN
SELECT [Flowers(F)], [Trim(T)], WasteMaterial
FROM dbo.HarvestedCannabis
WHERE FileID = @fileID
END
未使用该变量public List result=new List()代码>
为什么这里有一个列表
<代码>公共列表结果总计=新列表()
是否spharvestedcananabistotalreturn
返回数据?@DanB当我在SQL中运行sp时,是的,它没有问题1是您不能按顺序多次使用RETURN返回多个值。问题2是您不应该使用return向调用者提供数据(按照惯例,它用于指示成功或失败)。问题3-您从未设置过程中声明的局部变量-但这基本上是无关的,因为您的过程应该“返回”结果集。它可以做到这一点,但您需要解决上述问题。在过程的第一行添加“set nocount on”(设置无计数)。为什么要使用RETURN
3次?这不适用于返回
适用于。如果要返回标量值(而不是数据集或数据集的附加值),请使用OUTPUT
parameters。您从未为变量赋值(例如@flower
,因此我不知道它们为什么会出现)。若要继续,请不要使用。修复过程并在应用程序中正确参数化查询后,您应该能够检索结果集。
[spHarvestedCannabisTotalReturn]
@fileID int
AS
BEGIN
SELECT [Flowers(F)], [Trim(T)], WasteMaterial
FROM dbo.HarvestedCannabis
WHERE FileID = @fileID
END