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

DataGridView数据无法保存到SQL Server问题求助

问题排查与修复方案

1. 核心原因:LocalDB数据库文件路径导致操作副本

你的连接字符串使用了|DataDirectory|,在Visual Studio调试模式下,程序会自动将项目根目录的QLSV.mdf复制到bin/Debug或bin/Release目录中,你实际操作的是这个副本文件,而非你在Server Explorer中查看的项目根目录原文件,所以会出现提示成功但原数据库无数据的情况。

解决方法:

  • 打开项目属性 → 生成 → 将“复制到输出目录”选项从“始终复制”改为“如果较新则复制”;
  • 调试后可直接查看bin目录下的QLSV.mdf,其中会包含你插入的数据;
  • 若需直接操作项目根目录的数据库文件,可改用绝对路径(不推荐,不利于项目移植)。

2. 代码冗余与语法错误修复

(1) 移除不必要的SqlDataAdapter使用

在Save和Delete方法中,你创建SqlDataAdapter仅用来赋值InsertCommand,完全可以直接通过SqlCommand执行语句,简化代码:

// Save_Click方法简化示例:
string sql = $"insert into SINHVIEN(MSSV, HOTEN, CHUYENNGANH, GIOITINH, SOMON) values ('{textBox1.Text}', '{textBox2.Text}', '{comboBox1.Text}', '{sex}', '{countSubject}')";
SqlCommand sqlCommand = new SqlCommand(sql, cnn);
sqlCommand.ExecuteNonQuery();
// 删除所有adapter相关代码

(2) 修正Delete语句的语法错误

若MSSV为字符串类型,原代码中where MSSV = {c}未加单引号,会导致SQL语法错误,修正如下:

sql = $"delete from SINHVIEN where MSSV = '{c}'";

(3) 优化数据库连接管理

不要在Form构造函数中提前打开/关闭连接,改用using块自动释放连接资源,避免连接泄漏:

private void Save_Click(object sender, EventArgs e)
{
    using(SqlConnection cnn = new SqlConnection(connetionString))
    {
        cnn.Open();
        // 插入逻辑代码...
        // 无需手动调用Close,using块会自动释放连接
    }
}

3. 修复严重安全隐患:SQL注入风险

直接通过字符串拼接生成SQL语句,不仅会因特殊字符导致语法错误,还存在SQL注入攻击风险,必须改用参数化查询:

// 参数化插入示例:
string sql = "insert into SINHVIEN(MSSV, HOTEN, CHUYENNGANH, GIOITINH, SOMON) values (@MSSV, @HOTEN, @CHUYENNGANH, @GIOITINH, @SOMON)";
SqlCommand sqlCommand = new SqlCommand(sql, cnn);
sqlCommand.Parameters.AddWithValue("@MSSV", textBox1.Text);
sqlCommand.Parameters.AddWithValue("@HOTEN", textBox2.Text);
sqlCommand.Parameters.AddWithValue("@CHUYENNGANH", comboBox1.Text);
sqlCommand.Parameters.AddWithValue("@GIOITINH", sex);
sqlCommand.Parameters.AddWithValue("@SOMON", countSubject);
sqlCommand.ExecuteNonQuery();

验证步骤

  1. 修复路径配置后重新运行程序,插入测试数据;
  2. 打开bin目录下的QLSV.mdf,确认数据已正确保存;
  3. 替换为参数化查询并使用using块优化代码,确保程序稳定性与安全性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:30:41