ADO Update kilku tabel

0

Mam problem z robieniem UPDATE tabel w bazie, które edytuję w dataGridView.
Aktualnie mój kod wygląda tak:

private MySqlConnection dbConn = null;
        private MySqlDataAdapter myDAMieszkancy;
        private DataTable myTableMieszkancy;
        private BindingSource bSourceMieszkancy;
        private MySqlCommandBuilder myCBMieszkancy;

public BindingSource pobierzMieszkancow() {

            string sqlSelectMieszkancy = "SELECT mieszkancy.imie, mieszkancy.nazwisko, pokoje.nr_pokoju FROM mieszkancy LEFT JOIN zameldowania ON mieszkancy.id = zameldowania.id_mieszkanca LEFT JOIN pokoje ON pokoje.id = zameldowania.id_pokoju";
            myDAMieszkancy = new MySqlDataAdapter();
            myDAMieszkancy.SelectCommand = new MySqlCommand(sqlSelectMieszkancy, dbConn);
            myTableMieszkancy = new DataTable();
            myDAMieszkancy.Fill(myTableMieszkancy);

            bSourceMieszkancy = new BindingSource();
            bSourceMieszkancy.DataSource = myTableMieszkancy;

            return bSourceMieszkancy;

        }

dataGridViewMieszkancy.DataSource = polaczenie.pobierzMieszkancow();

I ładnie wypełnia mi dataGridView danymi pobranymi z tabeli, ale problem mam teraz ze zrobieniem UPDATE.
Normalnie, gdyby zapytanie było proste, można by zrobić tak:

private MySqlCommandBuilder myCBMieszkancy;

myCBMieszkancy = new MySqlCommandBuilder(myDAMieszkancy);
            myDAMieszkancy.UpdateCommand = myCBMieszkancy.GetUpdateCommand();
            myDAMieszkancy.Update(myTableMieszkancy);

Ale niestety przy takim zapytaniu jakim pobieram dane, nie da rady tak zrobić :/
Więc jak powinienem robić UPDATE danych, które zmienię w dataGridView?
Można zrobić od razu UPDATE wszystkich tabel z których dane wyświetlam, czy trzeba każdą oddzielnie?

Z góry dzięki za pomoc.

0

Update wykonuje się na jednej wskazanej tabeli.
Zależy jak rozumieć "zrobić od razu UPDATE wszystkich tabel", bo jeśli rozumieć to że należy wykonać x update w transakcji, to odpowiedź jest twierdząca, da się.
Twój select powinien zwracać jeszcze mieszkancy.id, aby można było jednoznacznie zidentyfikować rekord do update, bo imie i nazwisko nie jest jednoznaczne. W twoim przypadku rozumiem że musisz jedynie wykonać update zameldowania, w którym zmienisz id_pokoju.
Za pomocą mieszkańcy.id odnajdziesz rekord z zameldowania, który musisz zaktualizować, a po nr_pokoju musisz znaleźć pokoje.id, który podmienisz w zameldowania.id_pokoju.

0

Oczywiście, że chodzi mi właśnie o wykonanie x razy updatu w transakcji.
Pytanie tylko, w jaki sposób mam sprawdzić, które wiersze zapdejtować. MySqlCommandBuilder zrobiłby to za mnie, ale zapytanie jest zbyt rozbudowane i się wysypuje, a nie mam pojęcia jak to zrobić w takim przypadku właśnie, nigdy nic nie robiłem w C# ;)
Będę więc wdzięczny za podpowiedź jak sprawdzić, które wiersze się zmieniły i jak zrobić ich update w transakcji.

A no i jeszcze co do mieszkancy.id, mogę to pobrać, ale w jaki sposób ukryć tę kolumnę przy wyświetleniu na dataGridView?

1 użytkowników online, w tym zalogowanych: 0, gości: 1