我正在使用别人的代码,对C#一点都不满意!

我需要乘以total1total2。下面的代码给了我answer = 0,那是不对的。这是怎么了?!同样,如果重要的话,total1的值也作为int保存在MS SQL数据库中。当我在最后一行插入断点时,我注意到它正在将total2读取为9,将total1读取为"15"(带引号)。

System.Data.OleDb.OleDbConnection pcn;
System.Data.OleDb.OleDbCommand pcm;
System.Data.OleDb.OleDbDataReader prs;
pcn = new System.Data.OleDb.OleDbConnection("");
pcm = new System.Data.OleDb.OleDbCommand();
pcn.Open();
pcm.Connection = pcn;
var tableSql = String.Format(@"select sum(TicSold) as total1 from BusTickets where TicketType = '9'");
pcm.CommandText = tableSql;
prs = pcm.ExecuteReader();
var rowcount = 0;
while (prs.Read())
{
    rowcount++;
    total1 = prs["total1"].ToString();
}
prs.Close();
pcn.Close();

int total2 = 9;
int answer = total2 * Convert.ToInt32(total1);


更新:通过使用下面的贾斯汀方法,我能够获得显示正确数字而不是0的答案,但是现在我想在.aspx页面上显示“答案”。以前,我将其公开(public int answer),然后在我的html中放入作为显示的金额。但是它仍然显示0。上面的代码是我的代码,下面的代码是我的主页。再次,抱歉,我对此学习不足。

Total Ticket Profit: <strong><%= answer %></strong></p>
        </div>

最佳答案

查看Convert.ToInt32帮助页面,您将看到返回值:

Type: System.Int32
A 32-bit signed integer that is equivalent to the number in value, or 0 (zero) if value is null.


因此,total1的值“ 15”必须从Convert方法返回0,从而使乘法后的总数为零(0)。

我建议使用

int answer = 0;
int myTotal = 0;

if(int.TryParse(total1, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.CurrentCulture,out myTotal))
{
     answer = myTotal * total2;
}


更新

您更新的问题看起来可以通过查看this post来回答。它将变量定义为公共属性,然后将其称为<%=answer%>

public string Answer { get { return answer.ToString(); } }


或返回您要显示的计算答案的方法的结果(假设其返回值是answer)。

08-04 12:18