将字符串转换为整型,然后再乘以另一个整型
本文关键字:整型 另一个 然后 字符串 转换 | 更新日期: 2023-09-27 18:09:37
我正在使用别人的代码,我根本不擅长c# !
我需要将total1
和total2
相乘。下面的代码给我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);
UPDATE:我能够得到答案,以显示正确的数字,而不是通过使用下面的Justin的方法0,但现在我想在.aspx页面上显示"答案"。以前,我将其设置为public (public int answer),然后在我的html中添加<%= answer %>作为要显示的数量。但它仍然显示为0。上面的代码是我的后台代码,下面的代码是我的主页。再次抱歉,我在这方面缺乏知识,我正在学习。
Total Ticket Profit: <strong><%= answer %></strong></p>
</div>
该值应该已经是来自数据库的整数,因此,在读取值时,您应该只需要转换值:
int total1 = (int)prs["total1"];
查看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;
}
你更新的问题看起来可以通过查看这篇文章来回答。它将变量定义为公共属性,然后像<%=answer%>
public string Answer { get { return answer.ToString(); } }
或返回您正在显示的计算答案的方法的结果(假设其返回值为answer)。
除了其他人已经在评论中询问您的原始问题之外,我建议您查看ExecuteScalar方法,因为当只返回一个结果时,您实际上不需要循环遍历记录集。
但是,回答你的问题,total2
是从哪里来的?变量total1
本身肯定会返回一个字符串,因为当您设置它时,您正在将DB结果转换为字符串。(这个变量在哪里声明?例如,string total1
?)尝试将delcare作为int total1
,然后在获得结果时,将其作为total1 = Convert.ToInt32(prs["total1"]);
。我希望这对你有帮助,祝你好运!
total1 ISNULL ?
int iTotal1 = answer = 0;
if(int.TryParse(total1,out iTotal1 ))
{
answer = total2 * Convert.ToInt32(total1);
}else{
// total1 Not Int
}