Zapis do bazy danych

0

Witam!

Oto fragment kodu:

private void button2_Click(object sender, EventArgs e)
{

       int _numerplyty;
        _numerplyty = int.Parse(numerPlytyTextBox.Text);

        MessageBox.Show(_numerplyty.ToString());

      

        plytyTableAdapter.UpdateQuery(45, _numerplyty,1);
        plytyTableAdapter.Fill(database1DataSet.plyty);
        
       plytyBindingSource.EndEdit();

        database1DataSet.AcceptChanges();

Powyższy kod jest raczej "poglądowy".
Button updatuje numerpłyty i wszystko prezentuje się super ( widać zmiany updatowane) aż do zamknięcia aplikacji. "UpdateQuery" jest na pewno poprawne bo z pozycji querybuildera updatuje poprawnie rekordy w bazie.

W jaki sposób na stałe zapisać zmiany w bazie ?? czy mogą to być złe ustawiania bazy / sql2005expresa?

Z góry dzięki za pomoc.

0

Czesc,

podstawą ADONET jest bezpołączeniowość. To co zrobiłeś w tym kodzie to aktualizacja dataSet i adapterka.
Teraz te zmiany musisz zapisac do bazy w przeciwnym wypadku nie zostaną zapisane tak jak jest w Twoim przypadku.

jak wygląda działanie ADO.NET:

  1. wypelniamy dataSET z bazy i zamykamy połączenie z bazą
  2. operujemy na obiekcie dataSET
  3. zmiany odsyłamy do bazy

i tylko wtedy mogą zostać zapisane zmiany

podam ci kilka przykladów w C# na aktualizacje, wstawianie i wyszukiwanie danych :


wyszukiwanie danych

MySqlConnection polacz = new MySqlConnection();

polacz.ConnectionString = "Database=lokalna;Data Source=" + zmienna1 + ";
User Id=" + zmienna2 + ";Password=" +zmienna3 + "";

polacz.Open();

MySqlDataAdapter adapterek = new MySqlDataAdapter("select * from pracodawcy", polacz);

MySqlCommandBuilder buldozerek = new MySqlCommandBuilder(adapterek);

            DataSet myds = new DataSet();

            adapterek.Fill(myds, "pracodawcy");
            dataGridView1.DataSource = myds.Tables["pracodawcy"].DefaultView;
            polacz.Close();

wstawianie

MySqlConnection cn = new MySqlConnection();
cn.ConnectionString = "Database=lokalna;Data Source="+zmienna1+";User Id="+zmienna2+";Password="+zmienna3+"";
cn.Open();

string sql = "insert into pracodawcy" + "(nazwa) values" + "('" + zmienna10 + "')";
MySqlCommand cmd = new MySqlCommand(sql, cn);
cmd.ExecuteNonQuery();
cn.Close();


aktualizacja

MySqlConnection cn = new MySqlConnection();
cn.ConnectionString = "Database=lokalna;Data Source="+zmienna1+";User Id="+zmienna2+";Password="+zmienna3+"";
cn.Open();
string sql = "update pracodawcy set nazwa = '" + zmienna11+ "'";
MySqlCommand cmd = new MySqlCommand(sql, cn);
cmd.ExecuteNonQuery();
cn.Close();


oczywiscie to są przykłady z wykorzystaniem connectora do MySql - a ale tak samo jest z SqlSerwerem i innymi bazami.

Może te przykłady nie są przykładem dobrego programowania ( nie jestem programistą z 20 letnim stażem) ale działają na bank. ;-) ;-) ;-)

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