sql - 如何将数据表的值从字符串转换为整数
问题描述
我正在图书馆系统中制作精美的计算器。在其中,我需要计算给定日期的罚款。为此,我使用数据表加载罚款金额,然后,我需要通过添加每个罚款金额来计算总罚款金额。但是我在将字符串格式的罚款值解析为整数时遇到问题。这是错误的屏幕截图。
这是我用来将字符串值转换为整数并计算总罚款的代码。
int sum1 = 0;
int myNum;
String Display;
private void btnNext_Click(object sender, EventArgs e)
{
try
{
if (rbtnToday.Checked == true)
{
DateTime today = DateTime.Today;
Con.Open();
String select_today_query = "SELECT Fine FROM BookReceiveMem WHERE RecDate='" + today + "'";
Sqlda = new SqlDataAdapter(select_today_query, Con);
DataTable Dt = new DataTable();
Sqlda.Fill(Dt);
Con.Close();
foreach (DataRow row in Dt.Rows)
{
myNum = int.Parse(Dt.Columns[0].ToString());
sum1 = sum1 + myNum;
}
Display = sum1.ToString();
MessageBox.Show("Today Fine Amount is= " + Display, "Today Fine Calculation", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
有什么方法可以解决这个问题吗?
解决方案
数据库非常擅长计算总和之类的东西。如果Fine
是数据库中的整数,您可以将其汇总所有行并返回:
SELECT SUM(Fine) As TotalFine
FROM BookReceiveMem
WHERE RecDate = @recDate
您可以从代码中调用它而无需 DataTable,如下所示:
using(var cmd = Con.CreatCommand())
{
cmd.CommandText = "SELECT SUM(Fine) As TotalFine FROM BookReceiveMem WHERE RecDate = @recDate";
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("@recDate",DateTime.Today);
var result = (int)cmd.ExecuteScalar();
MessageBox.Show("Today Fine Amount is= " + result, "Today Fine Calculation", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
但是,更直接地回答您的问题:
myNum = int.Parse(Dt.Columns[0].ToString());
在这里,您获得了Column并尝试将其转换为整数。你真正想要做的是获得row
价值(你不需要Parse
它 - 它已经是一个整数!)
myNum = (int)row["Fine"];
推荐阅读
- javascript - Javascript Fetch 调用 WCF - 405(不允许的方法)
- mysql - Php 应用程序拒绝访问数据库,但 CLI 提供的凭据相同
- c++ - vec4 类型的 gltf 动画不是四元数吗?
- wpf - 传递类类型作为参数
- spring - ItemReader 无法通过 PrestoDriver 读取行
- java - 为什么列表不能用数组初始化,没有arrays.aslist()?
- html - CSS z-index 不适用于父元素
- python - 将字典列表转换为嵌套的字典列表(合并重复值)
- primeng - 需要使用 PrimeNG 框架显示宽表
- centos7 - CentOS7桥接模式下网关ping不通