【发布时间】:2013-04-17 00:57:12
【问题描述】:
我正在使用其他人的代码,但我一点也不擅长 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);
更新:通过使用下面贾斯汀的方法,我能够得到答案以显示正确的数字而不是 0,但现在我想在 .aspx 页面上显示“答案”。以前,我会将其公开(public int answer),然后在我的 html 中放入 以显示金额。但它仍然显示0。上面的代码是我的代码,下面的代码是我的主页。再次抱歉,我正在学习这方面的知识。
Total Ticket Profit: <strong><%= answer %></strong></p>
</div>
【问题讨论】:
-
你能从数据库中获取信息作为整数,而不是将其转换为字符串然后再返回吗?
total1 = prs["total1"]本身是否有效? -
你调试过你的代码吗?你在 total1 变量中得到什么值
-
你能在调试时检查它的值吗?那我还建议使用
Int32.TryParse方法而不是使用Convert.ToInt32。 -
在第二次尝试中,您只能得到 1)
int.Parse的异常 2) total3 的结果。除非 total3 或 total2 为 0,否则你怎么能得到 0?你说total2是9,所以如果total3是15你只能得到135。 -
所以在下一行执行后答案将是 135,对吧?该行执行后的答案是什么?