Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie übertrage ich die Änderungen, die ich an einer DataTable vorgenommen habe, in die Tabelle, aus der ich sie geholt habe?

Es geht nicht darum, die Verbindung offen zu halten, Sie müssen nur den Command Builder verwenden, bei MySql ist es meiner Meinung nach dasselbe.

private MySqlDataAdapter adapt;
private DataSet someDataSet;
someDataSet = new DataSet();

    public DataSet GetCustomerData(int customerId)
    {
        using(MySqlConnection connect = new MySqlConnection(ConnString))
        {
            connect.Open();
            MySqlCommand comm = new MySqlCommand("SELECT * FROM customers WHERE Id = @0", connect);
            someDataSet.Tables.Add("CustomersTable");
            comm.Parameters.AddWithValue("@0", customerId);
            adapt.SelectCommand = comm;
            adapt.Fill(someDataSet.Tables["CustomersTable"]);
        }

        return someDataSet;
   }

Nun zur Aktualisierung:Sie könnten auch einen neuen Adapter verwenden, aber dann müssen Sie ihm einen Auswahlbefehl geben, auf dessen Grundlage der Befehlsgenerator die Befehle Einfügen, Aktualisieren und Löschen ausführt.

    public void UpdateTable(DataTable table, int customerId)
    {
        using (MySqlConnection connect = new MySqlConnection(ConnString))
        {
            connect.Open();
            MySqlCommandBuilder commbuilder = new MySqlCommandBuilder(adapt);
            adapt.SelectCommand = new MySqlCommand("SELECT * FROM customers WHERE Id = "+customerId, connect); //or use parameters.addwithvalue
            adapt.Update(table);
        }
    }