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

如何将字符串参数h转为整数以完成Conviction表的SQL更新?

解决SQL整数参数转换问题

你的代码存在两个关键问题,导致Serial_no整数参数无法正确匹配:

  1. 为@h参数赋值时错误传入了SqlDbType.Int枚举,而非实际的整数值
  2. 传入的参数h是string类型,未转换为对应的整数类型

修正方案:

1. 安全转换字符串到整数(推荐)

在方法内部先对string类型的h做安全转换,避免非法格式引发报错:

void UPDATEConviction(string a, string b, string c, string d, string e, string f, string g, string h)
{
    if (!int.TryParse(h, out int serialNo))
    {
        MessageBox.Show("Serial_no格式错误,请输入有效整数");
        return;
    }

    using (SqlConnection conn = getc())
    {
        SqlCommand cmd = new SqlCommand("update Conviction set Date_Convicted =@a, Court_File=@b, Police_File=@c, Station=@d,Offence=@e,Sentence=@f,Convict_Status=@g Where Serial_no = @h", conn);
        cmd.Parameters.AddWithValue("@a", a);
        cmd.Parameters.AddWithValue("@b", b);
        cmd.Parameters.AddWithValue("@c", c);
        cmd.Parameters.AddWithValue("@d", d);
        cmd.Parameters.AddWithValue("@e", e);
        cmd.Parameters.AddWithValue("@f", f);
        cmd.Parameters.AddWithValue("@g", g);
        // 传入转换后的整数值
        cmd.Parameters.AddWithValue("@h", serialNo);

        conn.Open();
        cmd.ExecuteNonQuery();
        dataGridView3.DataSource = GetConvictoin();
    }  
}

2. 明确指定参数类型(可选)

如果能确保h是合法整数,可直接转换并明确参数类型,避免隐式转换问题:

// 替换原@h参数赋值代码
cmd.Parameters.Add("@h", SqlDbType.Int).Value = int.Parse(h);

3. 优化数据源取值逻辑

从DataGridView获取Serial_no时直接取整数类型,减少后续转换步骤:

// 直接获取整数
int serialNo = (int)this.dataGridView3.CurrentRow.Cells[0].Value;
convictions.label2.Text = serialNo.ToString();

// 调用方法时直接传int类型,同时修改方法参数为int h
UPDATEConviction(a, b, c, d, e, f, g, serialNo);
// 修改方法定义:void UPDATEConviction(string a, string b, string c, string d, string e, string f, string g, int h)

内容的提问来源于stack exchange,提问作者sakiasi baleiwai komai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:55:19