更新/添加表中的行

本文关键字:添加 更新 | 更新日期: 2023-09-27 18:23:55

我有一个有三列的表;ID、姓氏和名字

我想做的是制作一个按钮,可以添加新行,另一个按钮可以将现有联系人更新到此表中。我觉得我很接近,但有些东西就是不起作用。我有一个删除方法,效果很好,但我尝试更新方法的方式基本上是删除联系人,然后添加一个新联系人。它所做的是删除联系人,然后不添加任何其他内容。

这是我的addContact方法

        public int addContact(Contacts newContact)
    {
        MySqlConnection conn = null;
        if (newContact != null)
        {
            try
            {
                conn = new MySqlConnection();
                conn.Open();
                MySqlCommand cmd = new MySqlCommand();
                cmd.Connection = conn;
                cmd.CommandText = "insert into contacts (id, surname, last_name) values (@id, @surname, @firstName)";
                cmd.Prepare();
                cmd.Parameters.AddWithValue("@id", newContact.contactID);
                cmd.Parameters.AddWithValue("@surname", newContact.surname);
                cmd.Parameters.AddWithValue("@firstName", newContact.first_name);
                cmd.ExecuteNonQuery();
                return (int)cmd.LastInsertedId;
            }
            catch (MySqlException ex)
            {
                Console.WriteLine("Error: {0}", ex.ToString());
            }
            finally
            {
                if (conn != null)
                {
                    conn.Close();
                }
            }
        }
        return -1;
    }

我认为主要的问题是我的方法不正确。这是一个按钮,应该更新列表框中选择的当前联系人。

        private void button2_Click(object sender, EventArgs e)
    {
        Contacts currentContact = (Contacts)listBox1.SelectedItem;
        contactMan.removeContact(currentContact.contactID);
        Contacts testInsertContact = new Contacts();
        testInsertContact.surname = textBox2.Text;
        testInsertContact.first_name = textBox3.Text;
        testInsertContact.contactID = contactMan.addContact(testInsertContact);
        reloadContacts();
    }

感谢提供的任何帮助


我通过制作一个新项目并基本上重写相同的代码来修复它。不知道为什么,但问题是它没有正确连接到数据库,无论出于什么原因,它现在都能工作。

更新/添加表中的行

cmd.CommandText = "insert into contacts (id, surname, last_name) values (@id, @surname, @firstName)";

在之前写下这行

cmd.ExecuteNonQuery();