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

校园项目:TextBox数据存入数据库后刷新未显示问题求助

问题排查与解决方案

看起来你遇到了LocalDB开发里很常见的问题——数据成功加到ListBox,但数据库里看不到新增内容!结合你的代码,我帮你梳理几个核心原因和对应的修复方案:

1. 数据库文件被编译覆盖(最可能的原因)

你用|DataDirectory|指向数据库文件,默认情况下Visual Studio每次调试编译时,都会把项目根目录的DBCalorieApp.mdf复制到bin/Debug目录。你代码里写入的是输出目录里的数据库,但你刷新查看的是项目根目录下的原文件,自然看不到新数据。

修复步骤:

  • 右键项目里的DBCalorieApp.mdf文件,打开「属性」
  • 把「复制到输出目录」改成「如果较新则复制」或者「不复制」,避免每次编译覆盖输出目录的数据库
  • 之后查看数据时,去bin/Debug文件夹里找对应的.mdf文件打开,而不是项目根目录的那个

2. 连接字符串不统一,可能连接到了错误的数据库

你在Form构造函数里通过ConfigurationManager正确获取了配置文件里的连接字符串,但在按钮点击事件里又硬写了一个几乎一样的连接字符串(注意Data Source= (LocalDB)多了个空格!),这可能导致你连接到了不同的数据库实例。

修复方法:

统一用构造函数里的connectionString变量,别硬写!同时推荐用using语句自动管理连接和命令对象,不用手动Dispose()和Close(),更安全:

private void button1_Click(object sender, EventArgs e)
{
    try
    {
        string name = tb_naam.Text;
        string gender = tb_geslacht.Text;
        // 用统一的connectionString,避免硬写出错
        using (SqlConnection con = new SqlConnection(connectionString))
        {
            con.Open();
            // 重点:用参数化查询,避免SQL注入,还能解决特殊字符报错
            string sql = "INSERT INTO Persoon(Naam, Geslacht) VALUES (@Name, @Gender)";
            using (SqlCommand cmd = new SqlCommand(sql, con))
            {
                cmd.Parameters.AddWithValue("@Name", name);
                cmd.Parameters.AddWithValue("@Gender", gender);
                cmd.ExecuteNonQuery();
            }
        }
        lb_gebruikers.Items.Add(name + " - " + gender);
    }
    catch (Exception ex)
    {
        // 显示具体错误信息,方便排查
        MessageBox.Show("出错啦:" + ex.Message);
    }
}

把button2_Click也改成同样的写法,替换硬写的连接字符串和参数化查询。

3. 你的代码存在严重的SQL注入风险

直接把用户输入拼接进SQL语句是非常危险的!如果用户输入像O'Neil这种带单引号的内容,会直接抛出SQL语法错误;更严重的是恶意用户可以通过输入篡改你的数据库。上面的修复方案已经用了参数化查询,一定要改成这种写法!

4. 数据库刷新方式不对

如果你是在Visual Studio的服务器资源管理器里看数据库,记得右键对应的数据库,选择「刷新」才能看到最新数据;或者关闭数据库连接重新打开。


内容的提问来源于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:45:29