代码中没有错误,但尝试更新时表中没有发生变化

Posted

技术标签:

【中文标题】代码中没有错误,但尝试更新时表中没有发生变化【英文标题】:No errors in the code, but no changes occur in the table when trying to update it 【发布时间】:2021-09-20 19:44:28 【问题描述】:

我正在尝试在 C# Win Form 中更新我的数据。 我创建了一个“更新”按钮,但每当我运行它时,我都看不到表中有任何更改和任何发生的错误

void insertdata() 
    cmd = connection.CreateCommand();
    cmd.CommandText = "SELECT * FROM airport";
    adapter.SelectCommand = cmd;
    table.Clear();
    adapter.Fill(table);
    dgv.DataSource = table;


private void button_update_Click(object sender, EventArgs e)

    cmd = connection.CreateCommand();
    cmd.CommandText = "UPDATE airport SET  p_name = '"+textBox2.Text+ "',p_age = '" + textBox3.Text + "', c_name = '" + textBox4.Text + "', date = '" + textBox5.Text + "', city_t = '" + textBox6.Text + "', city_f ='" + textBox7.Text + "', trip_num = '" + textBox8.Text + "', plane_type = '" + textBox9.Text+"' WHERE p_id = '"+textBox1+"'";
    cmd.ExecuteNonQuery();
    insertdata();

我已经尝试添加

connection.Open();
connection.Close();

但是,我不断收到:“System.InvalidOperationException:”连接未关闭。连接已打开。”

我的代码中是否有任何更改以更新表中的行,因为每当我运行它时,我都没有收到任何错误。

【问题讨论】:

这是因为连接已经打开。更新后连接未关闭,可能会再次打开以供选择。能否贴出打开和关闭连接的代码? 每次你想运行一些SQL,然后new建立一个连接,完成后打开它并处理它。这将解决您 98% 的问题。然后阅读***.com/questions/14376473/…。然后用有意义的名字命名你的文本框。 @T.kowshikYedida connection.Open(); cmd = connection.CreateCommand(); cmd.CommandText = "更新机场 SET p_name = '"+textBox2.Text+ "',p_age = '" + textBox3.Text + "', c_name = '" + textBox4.Text + "', date = '" + textBox5.文本 + "',city_t = '" + textBox6.Text + "',city_f ='" + textBox7.Text + "',trip_num = '" + textBox8.Text + "',plane_type = '" + textBox9.Text+" ' 其中 p_id = '"+textBox1+"'"; cmd.ExecuteNonQuery();插入数据();连接.Close(); (可能)旁注:不要使用字符串插值或连接将值获取到 SQL 查询中。这很容易出错,并且可能使您的程序容易受到 SQL 注入攻击。使用参数化查询。见"How can I add user-supplied input to an SQL statement?"。 @qrttttt 如果您听从我的建议,问题就会停止。 【参考方案1】:

请注意你写的

WHERE p_id = '"+textBox1+"'

代替

WHERE p_id = '"+textBox1.Text+"'

可能您没有与 textBox 相同的 ID...

【讨论】:

以上是关于代码中没有错误,但尝试更新时表中没有发生变化的主要内容,如果未能解决你的问题,请参考以下文章

ORA-00942: 写入数据库中的表时表或视图不存在错误

子进程更新共享 mmap 内存但父进程没有变化

ReactNative:超过最大更新深度错误

您好.. 我正在尝试建立一个升级系统,我在终端中没有收到任何错误,但 json 数据没有更新

Android studio 2.0 错误:部署没有变化

追踪神秘更新 SQL 的技巧?