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);
}
}