[SQL 2005 CE] Jak zapisać zmiany w bazie

0

Mam sobie taki kod do wprowadzania zmian do bazy:

  private void button2_Click(object sender, EventArgs e)
        {
            if (textBox2.Text.Length == 0)
            {
                MessageBox.Show("Musisz podać polskie słówko");
                return;
            }
            if (textBox3.Text.Length == 0)
            {
                MessageBox.Show("Musisz podać angielskie słówko");
                return;
            }

            SqlCeConnection con = new SqlCeConnection("Data Source =\\kompakt.sdf;");

            con.Open();

            SqlCeCommand insert = new SqlCeCommand("INSERT INTO slownik (pol, ang) VALUES (@pol, @ang)");

            insert.Connection = con;
                
            insert.Parameters.Clear();
               
            insert.Parameters.AddWithValue("@pol", textBox2.Text);
              
            insert.Parameters.AddWithValue("@ang", textBox3.Text);
              
            insert.ExecuteNonQuery();
              
            insert.Parameters.Clear();
              
            insert.Connection.Close();
            
           MessageBox.Show("Słówko Dodane");

        }

Podczas działania programu (emulator) dodaje słówka do bazy, a potem mogę o dodane słówko zapytać
w wyszukiwarce słownika i wszystko jest OK, słówko się zapisało do bazy. Jednak po wyłączeniu emulatora i ponownym jego uruchomieniu, okazuje się że dodane wcześniej słówko nie jest w bazie!

Jak zapisać dane do bazy? nie wystarczy INSERT ? [???]

0

Co to znaczy po wyłączeniu emulatora i ponownym jego uruchomieniu??
A poza tym co to za ścieżka Data Source =\kompakt.sdf;?

Co do meritum zaś, to nie wiem, czy masz plik bazy - kompakt.sdf dodany do projektu. Jeśli tak, to sprawdź propertiesach, czy nie ma ustawione czasem 'Copy always'. Wtedy sytuacja jest jasna - Przy \uruchomieniu programu z IDE plik bazy jest kopiowany do bin\debug i na tym odbywaja sie wszystkiew dzialania. Aby sprawdzic, czy dziala prawidlowo, to nie odpalaj programu spod IDE, a 'normalnego' EXE. Wg mnie wszystko jest OK.

pozdrawiaMM

0

Poradziłem sobie. Wystarczyło zrobić hard reset emulatora i przegrać cały słownik na emulator.

@Marcin Miga -

Co to znaczy po wyłączeniu emulatora i ponownym jego uruchomieniu??

Zamknięcie okienka windosowskiego, z zapamiętaniem stanu emulatora.

A poza tym co to za ścieżka Data Source =\kompakt.sdf;?

To scieżka główna.(katalog główny .\ )

Co do meritum zaś, to nie wiem, czy masz plik bazy - kompakt.sdf dodany do projektu. Jeśli tak, to sprawdź propertiesach, czy nie ma ustawione czasem 'Copy always'. Wtedy sytuacja jest jasna - Przy \uruchomieniu programu z IDE plik bazy jest kopiowany do bin\debug i na tym odbywaja sie wszystkiew dzialania. Aby sprawdzic, czy dziala prawidlowo, to nie odpalaj programu spod IDE, a 'normalnego' EXE. Wg mnie wszystko jest OK.

Tak mam dodany do projekty a domyślnie ustawione na 'Copy always'. Ale i tak odpalenie EXE a nie IDE rozwiązało sprawę.

Dzięki [soczek]

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