Problem zapisu danych za pomocą SQLite w WPF

0

Witam!
Tworzę aplikację i chciałbym połączyć ja z bazą danych SQLite. Do obsługi i stworzenia bazy danych użyłem SQLite Administrator. Następnie zaimportowałem do aplikacji wymagane biblioteki (System.Data.SQLite). I stworzyłem 2 funkcje obsługujące - wyświetlanie danych, dodawanie danych.
Kod do każdej z funkcji jest tworzony na wzór tego
http://www.altcontroldelete.pl/artykuly/c-wpf-oraz-sqlite-razem-w-jednym-projekcie/
Przy dodawaniu danych a następnie wyświetleniu - 'niby' się dodają (po wywołaniu funkcji wyświetlającej dodane dane się tam znajdują), lecz po wyłączeniu programu i ponownym uruchomieniu funkcji wyświetlającej danych NIE MA. Próbowałem również z commitowaniem:

SQLiteTransaction trans;
trans = sqLitecon.BeginTransaction();
[...]
cmd.ExecuteNonQuery();
trans.Commit();

Niestety również nie działa :/
Properties dla dodanej bazy ustawiłem tak jak w ww. instrukcji:

Build Action: Content
Copy to Output Directory: Copy always
0

Up... Wydaje mi się że dane po prostu pozostają w DataSet, i po wyłączeniu programu usuwane są z pamięci podręcznej. Więc jak w trakcie działania programu przekazać je z DataSet do bazy danych?

0
Pawlak007 napisał(a):

Witam!

SQLiteTransaction trans;
trans = sqLitecon.BeginTransaction();
[...]
cmd.ExecuteNonQuery();
trans.Commit();

Czy możesz pokazać cały ten kod? Czemu używasz "BeginTransaction"?

0

Jestem poza domem więc kod będę mógł udostępnić dopiero wieczorem.
Robiłem wg. różnych wzorców znalezionych w internecie.
Np.
http://stackoverflow.com/questions/1757148/sqlite-transaction-not-committing
W każdym razie niby się dodaje rekord (wyświetla się w ListView), a jednak w bazie i po ponownym uruchomieniu programu nie ma uprzednio dodanego rekordu.

0

Już wiem w czym tkwi problem, mianowicie:
Przy łączeniu do bazy podaje źródło bazy danych w ten sposób:
SQLcon = new SQLiteConnection(@"Data Source=Database\DB.s3db");
Dane zostają pobierane z tej bazy Database\DB.s3db, zaś przy dodawaniu danych zostaje tworzony nowy plik z bazą danych w miejscu bin\Debug\Database\DB.s3db
Czy da się jakoś temu zapobiec?

0

spróbuj zmienić właściwość Copy to Output Directory pliku bazy z Copy always na Copy if newer

0

Wtedy już nie korzysta z tego pierwszego pliku tylko z pliku w bin\Debug\Database ale w sumie może tak już pozostać.

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