C# 显示不正确的成本
我的目标是在网页上显示一天会议的成本,即50美元。然而,我一直得到0.00美元作为回报。我在SQL中测试了SELECT语句,它正在检索正确的数据。现在,我已经将问题缩小到了C# 显示不正确的成本,c#,asp.net,if-statement,C#,Asp.net,If Statement,我的目标是在网页上显示一天会议的成本,即50美元。然而,我一直得到0.00美元作为回报。我在SQL中测试了SELECT语句,它正在检索正确的数据。现在,我已经将问题缩小到了if…else if方法中的PayBackCC语句中,但我不确定。它应该从变量cOneDCost中获取成本。感谢您的帮助 代码隐藏 protected void PayBackInfo() { try { con.Open(); SqlCommand PBCredit = new
if…else if
方法中的PayBackCC语句中,但我不确定。它应该从变量cOneDCost
中获取成本。感谢您的帮助
代码隐藏
protected void PayBackInfo()
{
try
{
con.Open();
SqlCommand PBCredit = new SqlCommand("SELECT * FROM PaymentInfo, ConferenceReg WHERE PaymentInfoID=PaymentInfoIDNum AND PaymentInfoID=@payID AND ConferenceReg.Deleted='N' AND ConferenceIDNum=@confID", con);
PBCredit.Parameters.AddWithValue("@confID", confID);
PBCredit.Parameters.AddWithValue("@payID", Request.QueryString["payID"]);
SqlDataReader readerPB = PBCredit.ExecuteReader();
while (readerPB.Read())
{
piID = readerPB["PaymentInfoID"].ToString();
cID = readerPB["ConferenceIDNum"].ToString();
poID = readerPB["PurchaseOrder"].ToString();
partnersNum = readerPB["PartnersIDNum"].ToString();
cFullCost = Convert.ToDecimal(readerPB["ConferenceFullFee"]).ToString("#,##0.00");
cOneDCost = Convert.ToDecimal(readerPB["ConferenceOneDayFee"]).ToString("#,##0.00");
partnersCost = Convert.ToDecimal(readerPB["PartnersFee"]).ToString("#,##0.00");
PayBackCC();
}
readerPB.Close();
}
finally
{
con.Close();
}
}
private void PayBackCC()
{
if (!partnersNum.Equals("null") || !partnersNum.Equals("0"))
{
msgLbl.Text = "$" + partnersCost;
}
else if (!cFullCost.Equals("0"))
{
msgLbl.Text = "$" + cFullCost;
}
else if (!cOneDCost.Equals("0"))
{
msgLbl.Text = "$" + cOneDCost;
}
}
请换
if (!partnersNum.Equals("null") || !partnersNum.Equals("0"))
到
除非您希望查询中出现“null”字符串如果您花时间启动调试器并遵循代码路径,我想您会很快发现问题出在哪里:关于这条语句:
!X | |!Y
。这什么时候是真的,什么时候是假的?答案应该会提示您出了什么问题。您的查询返回了多少条记录?如果只返回一行,则不要使用while,只需调用Read()method@Steve:谢谢。我将尝试调试器。@Yuri:只返回了一行。出于某种原因,我的数据库管理器已将PartnersIDNum的列设置为null,除非另有指定。是的,但作为您正在测试的字符串的“null”和DBNull(null)不一样。@EstherB假设您的partnersum
为null,您的if将被接受,因为partnersum
不是0。现在,如果您的partnersum
为“0”,则将采用相同的if,因为partnersum
不为空。有了这段代码,你就不可能执行else if块了,@Steve,谢谢你的解释。我现在明白我的问题了。
if (!String.IsNullOrEmpty(partnersNum) || !partnersNum.Equals("0"))