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

如何实现TextBox输入数据存库并与数据库数据同步显示至ListBox?

问题分析与修复方案

嘿,我一眼就看出你的代码里的核心问题了——你只做了读取数据库现有数据的操作,却没把新输入的用户信息写入数据库,而且后面的内存集合操作和ListBox的数据源完全不搭边,所以新用户肯定不会显示出来!

具体问题点:

  • 点击按钮时,你直接用SqlDataAdapter查询了数据库的Persoon表,但没有执行插入语句把tb_naam和tb_geslacht的内容存进数据库。
  • personen.Add(nieuwpersoon)只是在内存里添加了对象,但ListBox的数据源是从数据库查出来的DataTable,不是这个personen集合,所以那段判断lb_gebruikers.DataSource == personen的代码永远不会触发,完全无效。

修复后的完整代码:

private void button1_Click(object sender, EventArgs e)
{
    // 先获取输入框内容,做简单的非空校验
    string naam = tb_naam.Text.Trim();
    string geslacht = tb_geslacht.Text.Trim();
    
    if (string.IsNullOrEmpty(naam))
    {
        MessageBox.Show("请输入姓名!");
        return;
    }

    // 第一步:把新用户插入到数据库
    string insertQuery = "INSERT INTO Persoon (Naam, Geslacht) VALUES (@Naam, @Geslacht)";
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        // 使用参数化查询,防止SQL注入
        using (SqlCommand insertCmd = new SqlCommand(insertQuery, connection))
        {
            insertCmd.Parameters.AddWithValue("@Naam", naam);
            insertCmd.Parameters.AddWithValue("@Geslacht", geslacht);
            insertCmd.ExecuteNonQuery(); // 执行插入操作
        }
    }

    // 第二步:重新查询数据库的所有数据,绑定到ListBox
    using (SqlConnection connection = new SqlConnection(connectionString))
    using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Persoon", connection))
    {
        DataTable PersoonTable = new DataTable();
        adapter.Fill(PersoonTable);
        
        lb_gebruikers.DisplayMember = "Naam";
        lb_gebruikers.ValueMember = "Id";
        lb_gebruikers.DataSource = PersoonTable;
    }

    // 清空输入框,提升用户体验
    tb_naam.Clear();
    tb_geslacht.Clear();
}

额外说明:

  • 我添加了参数化查询,这能有效防止SQL注入攻击,比直接拼接字符串安全得多。
  • 增加了输入非空校验,避免插入空的姓名到数据库。
  • 插入完成后重新查询数据库并绑定,这样ListBox就能同时显示原有数据和新添加的数据了。
  • 最后清空输入框,方便用户继续添加下一个用户。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:22:50