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

WinForms搜索按钮优化需求:文本框为空点击时无报错无操作

解决文本框为空时搜索按钮无错误执行的问题

当前代码在ID_Number1文本框为空或输入非整数内容时,执行int.Parse会抛出异常,同时存在SQL注入风险和数据库连接泄漏隐患。以下是修改后的代码,实现空输入时不执行操作且无错误:

private void button4_Click(object sender, EventArgs e)
{
    // 验证输入有效性:为空或无法转为整数则直接返回
    if (string.IsNullOrWhiteSpace(ID_Number1.Text) || !int.TryParse(ID_Number1.Text, out int schoolId))
    {
        // 可选:添加用户提示,如 MessageBox.Show("请输入有效的学生ID");
        return;
    }

    // 使用using语句自动释放数据库连接,避免资源泄漏
    using (SqlConnection con = new SqlConnection("Data Source=DESKTOP-IPS9HAF\\JUSTINEVILLATEST;Initial Catalog=School_Records;User ID=zidex_server;Password=killerblade"))
    {
        con.Open();
        // 采用参数化查询,杜绝SQL注入风险
        SqlCommand comm = new SqlCommand("Select * from Students_Record where SchoolID = @SchoolId", con);
        comm.Parameters.AddWithValue("@SchoolId", schoolId);

        using (SqlDataReader srd = comm.ExecuteReader())
        {
            if (srd.Read())
            {
                GetFirstName.Text = srd.GetValue(1).ToString();
                GetLastName.Text = srd.GetValue(2).ToString();
                Course.Text = srd.GetValue(3).ToString();
                YearLevel.Text = srd.GetValue(4).ToString();
                Address.Text = srd.GetValue(5).ToString();
                Contact_Number.Text = srd.GetValue(6).ToString();
                Position_box.Text = srd.GetValue(8).ToString();
                Vaccinated_Box.Text = srd.GetValue(9).ToString();

                // 检查图片字段是否为空,避免读取空值出错
                if (!srd.IsDBNull(10))
                {
                    MemoryStream mem = new MemoryStream(srd.GetSqlBytes(10).Buffer);
                    Getting_Picture.Image = Image.FromStream(mem);
                }
                else
                {
                    Getting_Picture.Image = null;
                }
            }
            else
            {
                // 未找到记录时清空所有控件内容
                GetFirstName.Text = string.Empty;
                GetLastName.Text = string.Empty;
                Course.Text = string.Empty;
                YearLevel.Text = string.Empty;
                Address.Text = string.Empty;
                Contact_Number.Text = string.Empty;
                Position_box.Text = string.Empty;
                Vaccinated_Box.Text = string.Empty;
                Getting_Picture.Image = null;
            }
        }
    }
}

关键修改说明

  • 输入验证:通过string.IsNullOrWhiteSpace判断空输入,int.TryParse确保输入为有效整数,无效则直接终止方法执行,避免解析异常。
  • 参数化查询:替换字符串拼接SQL的写法,改用参数传递查询条件,彻底避免SQL注入攻击,同时防止输入格式导致的SQL语法错误。
  • 资源自动释放:使用using语句包裹SqlConnection和SqlDataReader,确保即使发生异常,数据库连接和读取器资源也能被自动释放,避免连接泄漏。
  • 空值与无结果处理:检查图片字段是否为数据库空值,防止加载图片时出错;未找到对应学生记录时,清空所有显示控件,提升用户体验。

内容的提问来源于stack exchange,提问作者Justine Louise Villa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 15:55:20