Jarek_P
(Jarek P)
17 Luty 2011 16:08
#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
(somekind)
17 Luty 2011 18:00
#2
To umieść ją w metodzie innego Buttona.
Żeby metoda Update zadziałała trzeba pewno napisać UpdateCommand.
grzelix
(Grzelix)
17 Luty 2011 22:06
#4
Jarek_P
(Jarek P)
18 Luty 2011 10:38
#5
Coś nikt nie odpisuje, znaczy, że źle opisałem problem.
Ale to nic. Już się poprawiam
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
**** “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ć
somekind
(somekind)
18 Luty 2011 22:01
#6
Pytanie zasadnicze - wiesz co to jest SQL?
Jarek_P
(Jarek P)
19 Luty 2011 10:01
#7
No jasne, że tak. I w zasadzie nasunąłeś mi pewien pomysł…
somekind
(somekind)
19 Luty 2011 21:40
#8
W linku, który podał grzelix generalnie wszystko jest opisane. Zrobiłeś to i Ci nie działa?
Jarek_P
(Jarek P)
21 Luty 2011 18:28
#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…
matzu
(Tomek Matz)
21 Luty 2011 18:59
#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
(Jarek P)
21 Luty 2011 19:40
#11
Taka mała rzecz, a może wszystko zepsuć Dzięki wszystkim. Temat do zamknięcia.