You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

代码报错‘输入字符串格式不正确’,请排查问题并提供解决方案

问题排查与修复方案

首先,你遇到的「输入字符串格式不正确」错误,核心原因有两个,同时代码还存在严重的安全隐患,我来逐一拆解:

1. 类型转换逻辑错误

你要把文本框内容转成decimal类型,但却用了Int64.Parse()——这个方法只能解析纯整数格式的字符串。如果textBox10里输入的是带小数的金额(比如123.45)、空值、或者非数字字符,就会直接抛出格式错误异常。

正确的做法是用decimal.TryParse()来安全转换,它不会直接抛出异常,还能帮你判断转换是否成功:

string tot = textBox10.Text;
decimal itot;
// 尝试转换,失败时会返回false
if (!decimal.TryParse(tot, out itot))
{
    MessageBox.Show("请输入有效的数字格式金额");
    return; // 转换失败就终止后续操作
}

2. 存在SQL注入风险

你直接把变量拼接到SQL语句里,这是非常危险的做法,恶意用户可以通过输入特殊字符篡改你的SQL逻辑,甚至删除整个数据库。必须使用参数化查询来避免这个问题:

// 用参数占位符代替直接拼接变量
string qry = "insert into sale (total) values (@Total)";
SqlCommand sc = new SqlCommand(qry, con);
// 添加参数并指定类型,确保安全
sc.Parameters.Add("@Total", SqlDbType.Decimal).Value = itot;

try
{
    int i = sc.ExecuteNonQuery();
    if (i >= 1)
        MessageBox.Show("Inserted successfully");
    else
        MessageBox.Show("Not done");
}
catch (Exception ex)
{
    // 捕获其他可能的异常,比如数据库连接问题
    MessageBox.Show($"操作失败:{ex.Message}");
}
finally
{
    // 记得关闭数据库连接(如果没有用using的话)
    if (con.State == ConnectionState.Open)
        con.Close();
}

额外建议

  • 可以给textBox10添加输入验证,比如只允许输入数字和小数点,从源头避免格式错误。
  • 数据库操作最好用using语句自动释放资源,比如:
using (SqlCommand sc = new SqlCommand(qry, con))
{
    // 参数设置和执行逻辑
}

内容的提问来源于stack exchange,提问作者Pravee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:47:08