我的函数没有返回任何内容 - strReturn为空:
try
{
SqlParameter[] parameter = new SqlParameter[]
{
new SqlParameter("@MerchantID", MercahntID),
new SqlParameter("@LoactionID", LoactionID)
};
SqlHelper.ExecuteNonQuery(DbConnString, System.Data.CommandType.StoredProcedure, "GetMerchantLocationZip", parameter);
return strReturn;
}
catch (Exception ex)
{
LogError("Error Occurred When Retrieving Mercahnt Location Zip: MercahntID:" + MercahntID.ToString(), ex);
return strReturn;
}
}
当我使用'exec GetMerchantLocationZip(3333,373773)执行此存储过程时,我在SQL中获得了正确的zipcode。为什么我不在Visual Studio中获取它?
Create PROCEDURE [dbo].[GetMerchantLocationZip](
@MerchantID bigint,
@LoactionID bigint)
AS
Begin
Select Zip FROM Merchant_Location
where MerchantID=@MerchantID AND LocationID =@LoactionID
End
我正在学习,如果这是一个明显的错误,请道歉。谢谢大家!
答案 0 :(得分:6)
您没有获得结果,因为您没有将代码作为查询执行。
您正在呼叫SqlHelper.ExecuteNonQuery()
,但不会返回任何结果。
看起来你正在使用SqlHelper应用程序块,所以我认为你想要的代码是(如果你在查询中返回多行):
DataSet ds = SqlHelper.ExecuteDataSet(DbConnString,
CommandType.StoredProcedure,
"GetMerchantLocationZip",
parameter);
然后 ds
将包含查询结果。
如果您尝试从数据库而不是一组行中检索单个值,那么您的代码将是:
object zip = SqlHelper.ExecuteScalar(DbConnString,
CommandType.StoredProcedure,
"GetMerchantLocationZip",
parameter);
答案 1 :(得分:4)
您似乎无法在任何地方向strReturn
分配任何内容。您还需要使用ExecuteScalar
从单行单列结果集中检索值。
strReturn = SqlHelper.ExecuteScalar(...) as string;
带有OUTPUT
的{{1}}参数。
答案 2 :(得分:1)
您正在调用ExecuteNonQuery,它只返回受影响的行数。试试这个:
var zipCode = SqlHelper.ExecuteScalar(DbConnString, System.Data.CommandType.StoredProcedure, "GetMerchantLocationZip", parameter);
答案 3 :(得分:0)
检查您的拼写!! 您可能在SQL语句中抛出异常,因为您在某处(或许多地方)拼错了“商家”或“位置”。
而且,正如其他人所指出的那样,你可能想要这个:
return SqlHelper.ExecuteScalar(DbConnString,
System.Data.CommandType.StoredProcedure,
"GetMerchantLocationZip", parameter);
答案 4 :(得分:0)
您正在使用不返回结果的ExecuteNonQuery,它只是返回更新的行数。你想要执行一个阅读器。
答案 5 :(得分:0)
strReturn
未设置,您需要拨打ExecuteScalar
而不是ExecuteNonQuery
。
答案 6 :(得分:0)
您可能希望调用ExecuteScalar
而不是ExecuteNonQuery,因为预计它不会返回。
也许是以下代码
var zipObject = SqlHelper.ExecuteScalar(DbConnString, System.Data.CommandType.StoredProcedure, "GetMerchantLocationZip", parameter);
return (string)zipObject;