SQL/C# Dane nie są zapisywane do bazy

0

Witam serdecznie, jestem nowy więc na początku chciałbym się przywitać :)
Programuję amatorsko, chciałbym zrobić aplikację, która zapisuje wpisane przez użytkownika dane do bazy danych i wyświetla je w kontrolce dataGridView.
Gdzie już jestem: Dane są wpisywane do textboxów, dwie pozycje Imie i Nazwisko. Po naciśnięciu przycisku dane mają być zapisane do bazy danych. Dane są wyświetlane w datagridview.
__Problem: __Po wpisaniu danych wyświetlają się one w datagridview poprawnie, lecz gdy tylko zamknę program i podglądnę dane w tabeli okazuje się, że jest ona pusta? Wygląda to tak, jakby nie zostały one zapisane do bazy.
Baza danych ma jedną tabelę, nazwa: Tabelka, w której są trzy kolumny Imie, Nazwisko i Id, Id automatycznie nadaje numer.

Kod:

 
 private void button1_Click(object sender, EventArgs e)
        {
            using (SqlConnection conn = new SqlConnection(
                 Properties.Settings.Default.Database1ConnectionString)) // połączenie do mojej bazy
            {
                conn.Open(); // otwieram połącznie
                try
                {
                    //zapytanie do bazy       
                    string commandString = "INSERT INTO Tabelka VALUES (@Imie, @Nazwisko)";
                    // dodanie parametrow do commandString i wykonanie zapytania        
                    SqlCommand dodajUsera = new SqlCommand(commandString, conn);
                    dodajUsera.Parameters.AddWithValue("@Imie", textBox2.Text);
                    dodajUsera.Parameters.AddWithValue("@Nazwisko", textBox3.Text);
                    dodajUsera.ExecuteNonQuery();
                }
                finally
                {
                    //zamknięcie połączenia                  
                    conn.Close();
                }
                Close();
            }    
        }

Proszę o pomoc w znalezieniu błędu.

0

Przed finally dodaj blok

catch (Exception ex)
{
 	MessageBox.Show(ex.Message);
}

i zobacz czy nie przechwyci żadnego wyjątku. (zakładam że zmiana INSERT INTO Tabelka VALUES (@Imie, @Nazwisko) na INSERT INTO Tabelka (imie, nazwisko) VALUES (@Imie, @Nazwisko) pomoże, ale to potwierdzi wyjątek - o ile się pojawi)

0

Zmieniłem commandstringa tak jak podałeś i utworzyłem catch z wyświetleniem messageboxa z błędem. Messagebox się nie pojawia.

 private void button1_Click(object sender, EventArgs e)
        {
            using (SqlConnection conn = new SqlConnection(
                 Properties.Settings.Default.Database1ConnectionString)) // połączenie do mojej bazy
            {
                conn.Open(); // otwieram połącznie
                try
                {
                    //zapytanie do bazy       
                    string commandString = "INSERT INTO Tabelka (Imie, Nazwisko) VALUES (@Imie, @Nazwisko)";
                    // dodanie parametrow do commandString i wykonanie zapytania        
                    SqlCommand dodajUsera = new SqlCommand(commandString, conn);
                    dodajUsera.Parameters.AddWithValue("@Imie", textBox2.Text);
                    dodajUsera.Parameters.AddWithValue("@Nazwisko", textBox3.Text);
                    dodajUsera.ExecuteNonQuery();
                }
                catch 
                {
                    MessageBox.Show("błąd");
                }
                finally
                {
                    //zamknięcie połączenia                  
                    conn.Close();
                }
                Close();
            }    
        } 

EDIT: Zrobiłem zanim edytowałeś :)

0

Czyli błąd sie nie pojawia a zmiany w bazie się nie zapisują tak ?

To jest MSSQL (na to wskazuje SqlCommand ) czy MySQL tak jak zaznaczyłeś w tagu ?

0

Czyli błąd sie nie pojawia a zmiany w bazie się nie zapisują tak ?

Zgadza się, błąd się nie pojawia, a dane nie zapisują się w bazie.

Bazę danych stworzyłem za pomocą VS 2013, następnie dodałem połączenie do tej bazy, dzięki temu mam stringa do łączenia.
Reasumując, moim zdaniem jest to MSSQL, a w tagach popełniłem błąd.

0

To nie mam pojęcia... powinno działać... (utworzyłem taką tabelę u siebie i działa...) :/

0

http://stackoverflow.com/questions/3317868/insert-problem-in-c-using-sqlcommand posprawdzaj
są dwie podejrzane elementy w tej sprawie :p

  1. albo masz w opcjach zaznaczone żeby zawsze kopiował "czystą" bazę przy uruchamianiu programu
  2. albo masz w connectionstringu ustawione User Instance
    Daj jeszcze connectionstringa
0

hej, z użytkownikiem hipekk doszliśmy do wniosku, że najlepsza będzie dla mnie baza SQL Compact ponieważ potrzebuje prostej bazy, która będzie mogła zostać uruchamiana na każdym komputerze bez instalacji całego SQL Server. Szukam ciekawych poradników i działam :)

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