Obecnie robiłem proste kodowanie związane z SQL i C #. Stworzyłem ten formularz rejestracyjny, który przechowuje dane, nazwa użytkownika i hasło w bazie danych SQLite. Jest to kod, którego obecnie używam:

private void AddLoginInfo(string username, string password)
    {
        auth = new Authentication();
        auth.getConnection();

        using (SQLiteConnection con = new SQLiteConnection(auth.connectionstring))
        {
            SQLiteCommand cmd = new SQLiteCommand();
            con.Open();

            string que = @"INSERT INTO LoginInfo(Username, Password) VALUES (@username, @password)";
            cmd.CommandText = que;
            cmd.Connection = con;
            cmd.Parameters.Add(new SQLiteParameter("@Username", username));
            cmd.Parameters.Add(new SQLiteParameter("@Password", password));
            cmd.ExecuteNonQuery();

            MessageBox.Show("Account Created!");
        }
    }

Ten kod działa obecnie i zwiększa jednak odpowiednią tabelę w bazie danych, jednak za każdym razem, gdy dodaje się nowy użytkownik. Informacje o użytkowniku można użyć do logowania, ale nie pokazuje się w tabeli, która jest oglądana za pomocą przeglądarki DB dla SQLite.

Na przykład, jeśli utworzę nowy użytkownik; 'admin Jeśli jednak zobaczę, że bardzo dane w przeglądarce DB Dane nie pokazują nawet po odświeżeniu stołu.

Po wykonaniu kopania, znalazłem To i zobaczył, że oni użyto sqlCommand.Parameters.AddWithValue, więc próbowałem tego w moim kodzie:

SQLiteCommand cmd = new SQLiteCommand(@"INSERT INTO LoginInfo(Username, Password) VALUES (@username, @password)", con);
cmd.Parameters.AddWithValue(new SQLiteParameter("@Username", txtBoxUsername.Text));

Próbowałem tego i dostałem błąd CS7036. Wtedy zdałem sobie sprawę, że nie używali części new SQLiteParameter(), więc usunęłam to cmd.Parameters.AddWithValue("@Username", txtBoxUsername.Text); i ponownie wypróbowałem, ale nadal nie będzie aktualizowany w tabeli, ale dane mogą być nadal używane do zalogowania się.

Znalazłem także Podobny post ale nikt go nie odpowiedział. Teraz nie wiem, co robić, więc proszę o pomoc.

0
Sonny P. 28 luty 2019, 20:52

2 odpowiedzi

Najlepsza odpowiedź

Zrozumiałem, jaki był problem; Sprawdzałem bazę danych przechowywaną w rozwiązaniu, ale co powinienem sprawdzić, to baza danych przechowywana w folderze ... bin. Baza danych w folderze pokazuje dodane dane.

0
Sonny P. 2 marzec 2019, 17:23

Czy pobierasz plik DB z innego systemu? I.E. Emulator Android lub lokalizacja sieci?

Czy w folderze znajdują się jakieś inne pliki, szczególnie szukasz nazwy pliku, która zawiera "-wal". Informacje dodatkowe na temat SQLite Wal Format

Dane są faktycznie zawarte w tym innym pliku. Przeglądarka DB wie, aby szukać tego pliku. Jeśli jednak pobierasz DB do swojego systemu, zanim spojrzysz, prawdopodobnie nie pobierasz również pliku -wala.

W zależności od tego, w jaki sposób konfigurujesz swój sqlite DB limit domyślnie dla progu punktu kontrolnego wynosi 1 KB. Dopóki punktu kontrolnego zostanie uruchomiony, dane nie zostaną przeniesione do głównego pliku DB. Istnieją sposoby, aby ręcznie wywołać punkt kontrolny, zobacz link, który zawierałem powyżej.

0
Neil 28 luty 2019, 18:22