【问题标题】:SQL, Update where id, Code is correct no errors but its not updatingSQL,更新哪里 id,代码是正确的,没有错误,但它没有更新
【发布时间】:2014-07-22 08:44:36
【问题描述】:

我有一个数据库。

我喜欢使用来自文本框的输入来更新我的表格“Personen”。 当我单击 按钮 时,它说它已更新。但是当我查询数据库时它没有更新。

这是我的代码。

private void button1_Click(object sender, EventArgs e)
    {
        string sqlIns = @"UPDATE Personen SET Voornaam=@VN, Tussenvoegsel=@TN, Achternaam=@AN WHERE (ID=@ID) ;";

        //Maak commando object
        OleDbCommand command = new OleDbCommand(sqlIns, Connectie);
        command.Parameters.AddWithValue("@ID", Convert.ToInt32(TextBoxVerwijderen.Text));
        command.Parameters.AddWithValue("@VN", Convert.ToString(textBox1.Text));
        command.Parameters.AddWithValue("@TN", Convert.ToString(textBox2.Text));
        command.Parameters.AddWithValue("@AN", Convert.ToString(textBox3.Text));
        Connectie.Close();
        try
        {
            //Open de connectie
            Connectie.Open();
            //Voer commando uit
            command.ExecuteReader();
            Connectie.Close();
            //Meldingen succes op het scherm
            LabelSucces.Text = "Persoon is succesvol Geupdate " + sqlIns;
        }
        catch (OleDbException ex)
        {
            MessageBox.Show(ex.Message + ex.StackTrace, "Exception details");
        }
        finally
        {
            //Sluiten van de connectie
            Connectie.Close();
        }
    }

您好。 亚历克斯

【问题讨论】:

  • 尝试检查 ID 参数,也许你没有传递正确的值,还要检查 ExecuteNonQuery() 返回的计数
  • 你确定有一行满足 (ID=@ID) 吗?

标签: c# sql update-statement


【解决方案1】:

使用 command.ExecuteNonQuery(); 代替 command.ExecuteReader();

像这样使用查询

    command.Parameters.AddWithValue("ID", Convert.ToInt32(TextBoxVerwijderen.Text));
    command.Parameters.AddWithValue("VN", Convert.ToString(textBox1.Text));
    command.Parameters.AddWithValue("TN", Convert.ToString(textBox2.Text));
    command.Parameters.AddWithValue("AN", Convert.ToString(textBox3.Text));

【讨论】:

  • 你传递的连接字符串是什么?你有什么例外吗?
  • OleDbConnection Connectie = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Alex\Desktop\visual_studio1\test.accdb;Persist Security Info=False" );这是 100% 的工作,不,我没有得到任何例外。
  • 是的,它现在正在更新,我遇到的问题是,当我更新它时,ID 在 Voornaam 的位置上,而不是我想用新值更新的 ID。你也可以帮助我吗?
  • 好的然后接受这个答案然后我也以新的方式更新了我的ans
  • 如果您以这种方式工作,请尝试找出您的第一种方法有什么问题。我强烈反对只从文本框中获取字符串,您可以查看 SQL 注入。在这个意义上,最初的基于参数的方法要好得多。
【解决方案2】:
Connectie.Close();

看起来这就是问题所在。删除它并尝试在开始时打开连接并在结束时关闭。之间不要做任何事情。

【讨论】:

    猜你喜欢
    • 2014-09-22
    • 1970-01-01
    • 2021-07-28
    • 2012-06-05
    • 2020-04-11
    • 2021-08-31
    • 2013-03-06
    • 2012-01-31
    • 1970-01-01
    相关资源
    最近更新 更多