Funkcja Update C#


(Jarek P) #1

Pisząc program bazodanowy doszedłem do pewnego momentu. Wczytałem już informacje z bazy danych, edytowałem kilka i chcę zapisać nowe informacje w bazie - aktualizować ją, ale nie bardzo wiem jak to zrobić. Słyszałem, że powinienem użyć funkcji update...

con.Open();



            MySql.Data.MySqlClient.MySqlDataAdapter adapter = new MySql.Data.MySqlClient.MySqlDataAdapter(give, con);

            DataTable tb = new DataTable("zwierzak");

            adapter.Fill(tb);


            dataGridView1.DataSource = tb;


            var zmiany = new DataTable();

            zmiany = tb.GetChanges();


            adapter.Update(zmiany);

PS dobrze by było, gdyby funkcję update umieścić pod innym Buttonem.


(somekind) #2

To umieść ją w metodzie innego Buttona.

Żeby metoda Update zadziałała trzeba pewno napisać UpdateCommand.


(Jarek P) #3

W jaki sposób ? :slight_smile:


(Grzelix) #4

rozdział Updating the Data Set

http://dev.mysql.com/doc/refman/5.1/en/ ... intro.html


(Jarek P) #5

Coś nikt nie odpisuje, znaczy, że źle opisałem problem. :frowning:

Ale to nic. Już się poprawiam :slight_smile:

Problem wygląda tak:

-Jestem połączony do bazy MySql.

-Pobrałem z niej dane przez adapter, do obiektu typu DataTable:

DataTable tb = new DataTable("zwierzak");

            adapter.Fill(tb);                    

            dataGridView1.DataSource = tb;

* tb- wiadomo, obiekt typu DataTable, w którym przechowuje elementy.

** adapter - obiekt typu DataAdapter, który "wrzuca" do tb dane z bazy MySql.

***dataGirdView -nazwa mówi sama za siebie :slight_smile:

**** "zwierzak" to nazwa tabeli w bazie danych.

No i teraz chciałbym, żeby to, co zmienię w obiekcie DataGirdView, zostało przesłane do bazy danych, czyli, żeby została ona zaktualizowana.

Działam w C#, posiadam Connector do Mysql.

Mam nadzieję ,że podałem wszystkie informacje. Gdyby coś było niejasne proszę pisać :smiley:


(somekind) #6

Pytanie zasadnicze - wiesz co to jest SQL?


(Jarek P) #7

No jasne, że tak. I w zasadzie nasunąłeś mi pewien pomysł...


(somekind) #8

W linku, który podał grzelix generalnie wszystko jest opisane. Zrobiłeś to i Ci nie działa?


(Jarek P) #9

No właśnie powinno być dobrze, ale nie jest do końca...

Oto kod:

MySqlConnection polaczenie = new MySqlConnection("UID=root;Server=localhost;Password=;database=baza;");

            polaczenie.Open();


            MySqlCommand komenda = new MySqlCommand("INSERT INTO neos (id, password, serwer) VALUES ('@1', '@2', '@3')",polaczenie);


            komenda.Parameters.AddWithValue("@1",nick.Text);

            komenda.Parameters.AddWithValue("@2",haslo.Text);

            komenda.Parameters.AddWithValue("@3",listBox1.SelectedItem.ToString());        


         komenda.BeginExecuteNonQuery();


            polaczenie.Close();

Problem w trym, że do bazy wchodzą dane @1,@2,@3, a nie są zamieniane...


(Tomek Matz) #10

To dlatego, że umieściłeś nazwy parametrów w pojedynczym cudzysłowie. Poprawiony kod:

MySqlConnection conn = null;

MySqlCommand cmd = null;


try

{

    conn = new MySqlConnection("server=localhost;User Id=root;password=;database=baza;");

    cmd = new MySqlCommand("INSERT INTO neos (id, password, serwer) VALUES (@1, @2, @3)", conn);


    cmd.Parameters.AddWithValue("@1", nick.Text);

    cmd.Parameters.AddWithValue("@2", haslo.Text);

    cmd.Parameters.AddWithValue("@3", listBox1.SelectedItem.ToString());


    conn.Open();

    return cmd.ExecuteNonQuery();

}

catch (Exception ex)

{

    throw ex;

}

finally

{

    if (conn != null && conn.State == ConnectionState.Open)

        conn.Close();

}

(Jarek P) #11

Taka mała rzecz, a może wszystko zepsuć :slight_smile: Dzięki wszystkim. Temat do zamknięcia.