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  
          
              
                17 Luty 2011 18:00
               
              #2 
           
         
        
          To umieść ją w metodzie innego Buttona.
Żeby metoda Update zadziałała trzeba pewno napisać UpdateCommand.
         
        
           
         
            
       
      
        
          
          
            grzelix  
          
              
                17 Luty 2011 22:06
               
              #4 
           
         
        
        
           
         
            
       
      
        
          
          
            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  
          
              
                18 Luty 2011 22:01
               
              #6 
           
         
        
          Pytanie zasadnicze - wiesz co to jest SQL?
         
        
           
         
            
       
      
        
          
          
            Jarek_P  
          
              
                19 Luty 2011 10:01
               
              #7 
           
         
        
          No jasne, że tak. I w zasadzie nasunąłeś mi pewien pomysł…
         
        
           
         
            
       
      
        
          
          
            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  
          
              
                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  
          
              
                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  
          
              
                21 Luty 2011 19:40
               
              #11 
           
         
        
          Taka mała rzecz, a może wszystko zepsuć