StokGiris窗体中选择的产品无法显示在dgvStokGiris中
问题排查与修复方案
以下是导致数据无法在dgvStokGiris中显示的核心问题及修复方案:
1. INSERT语句语法错误
UrunStokGiris窗体的插入命令中,VALUES子句存在无效语法,同时缺少durum字段赋值(你的查询逻辑只过滤durum='Beklemede'的记录):
// 修正后的INSERT语句 komut = new SqlCommand("INSERT INTO tbStokGiris (refno, ukodu, starih, stokgiren, tedarikid, durum) VALUES (@refno, @ukodu, @starih, @stokgiren, @tedarikid, 'Beklemede')", baglanti);
2. MessageBox确认逻辑不完整
原代码中确认弹窗的判断条件缺失具体枚举值,导致插入逻辑永远不会执行:
// 修正后的判断逻辑 if (MessageBox.Show("Bu ürün eklenecek?", pbaslik, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
3. 空Catch块无法捕获异常
原catch块为空,插入过程中出现错误无法及时发现,需添加异常提示:
catch (Exception ex) { MessageBox.Show("Ürün ekleme hatası: " + ex.Message, pbaslik, MessageBoxButtons.OK, MessageBoxIcon.Error); if (baglanti.State == ConnectionState.Open) baglanti.Close(); }
4. LoadStokGiris中的查询问题
- 原LIKE查询缺少通配符,仅匹配完全相等的
refno; - 存在SQL注入风险,需改用参数化查询;
- 未正确释放数据资源,易导致连接泄漏:
修正后的LoadStokGiris方法
public void LoadStokGiris() { try { int i = 0; dgvStokGiris.Rows.Clear(); // 使用using块自动释放资源 using (var baglanti = new SqlConnection("你的数据库连接字符串")) { baglanti.Open(); using (var komut = new SqlCommand("SELECT * FROM vwStokGiris WHERE refno = @refno AND durum = 'Beklemede'", baglanti)) { komut.Parameters.AddWithValue("@refno", txtRefNo.Text); using (var dr = komut.ExecuteReader()) { while (dr.Read()) { i++; dgvStokGiris.Rows.Add(i, dr[0].ToString(), dr[1].ToString(), dr[2].ToString(), dr[3].ToString(), dr[4].ToString(), dr[5].ToString(), dr[6].ToString(), dr[7].ToString()); } } } } } catch (Exception ex) { MessageBox.Show("Veri yükleme hatası: " + ex.Message, pbaslik, MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
5. 主窗体实例引用验证
确保UrunStokGiris中的stokGiris是主窗体的当前打开实例,而非新创建的实例。主窗体打开子窗体时需传递自身引用:
// 主窗体中打开子窗体的代码示例 private void btnUrunAra_Click(object sender, EventArgs e) { var urunForm = new UrunStokGiris(); urunForm.stokGiris = this; // 传递当前主窗体实例 urunForm.ShowDialog(); }
排查步骤
- 执行修正后的代码,直接查询
tbStokGiris表确认新记录是否插入成功; - 检查新记录的
durum字段值是否为Beklemede; - 确认
txtRefNo.Text的值与新记录的refno完全匹配; - 查看异常提示,定位是否存在数据加载或插入环节的错误。
内容的提问来源于stack exchange,提问作者Ferhenk Tore
相关产品推荐
相关产品推荐

