Czy chcesz zareagować na tę wiadomość? Zarejestruj się na forum za pomocą kilku kliknięć lub zaloguj się, aby kontynuować.

Zapis DataTable do bazy SQLite

Go down

Zapis DataTable do bazy SQLite Empty Zapis DataTable do bazy SQLite

Pisanie by Fitter Pon Lip 22, 2013 4:50 pm

Witam, od jakiegoś czasu mam problem z przeniesieniem danych które mam w DataGridView do tabeli bazy SQLite. Już w zasadzie skończyły mi się pomysły, może mieliście z tym do czynienia / wiecie jak to zrobić?
Jak dotychczas udało mi się stworzyć takie coś:
Kod:
SQLiteConnection m_dbConnection;
            DataTable dane = new DataTable("tab");

            m_dbConnection = new SQLiteConnection("Data Source=database.sqlite;Version=3;");
            m_dbConnection.Open();

            dane = dataGridView.DataSource as DataTable;
            //dataGridView.EndEdit();
            SQLiteDataAdapter adapter = new SQLiteDataAdapter("SELECT * FROM tab", m_dbConnection);
            SQLiteCommandBuilder builder = new SQLiteCommandBuilder(adapter);
            adapter.Update(dane);
Jednak dostaję cały czas wyjątek:
Kod:
Brak elementu DataColumn 'ilosc' w elemencie DataTable 'tab' dla elementu SourceColumn 'ilosc'.

Tu jeszcze daje kod tworzenia tabeli:
Kod:
sql = "CREATE TABLE " + nazwa + " (id INTEGER PRIMARY KEY ASC, lp INTEGER,nsn TEXT, jim TEXT, pn TEXT, nazwa TEXT, jm TEXT, ilosc INTEGER, szafa TEXT, miejsce TEXT, krytyk INTEGER, ksiazka TEXT, karta INTEGER)";
            try
            {
                command = new SQLiteCommand(sql, m_dbConnection);
                command.ExecuteNonQuery();
                System.Console.WriteLine("Pomyślnie utworzono tabelę");
            }
            catch (Exception e) { System.Console.WriteLine(e.ToString()); }
Kolumny DataGridView odpowiadają tym w tabeli SQLite, jedyne różnice to nazwy kolumn (np. w SQLite kolumna ilosc, a w DataGridView kolumna Ilość).
Pzdr

Fitter

Liczba postów : 12
Join date : 26/06/2013

Powrót do góry Go down

Zapis DataTable do bazy SQLite Empty Re: Zapis DataTable do bazy SQLite

Pisanie by Fitter Sro Lip 24, 2013 7:38 pm

Na prawdę nie macie pomysłu co i jak?
Problem w pewnym sensie rozwiązałem, mianowicie:
Najpierw wykasowałem zawartość tabeli zapytaniem:
Kod:
DELETE FROM nazwa_tabeli
Potem wykorzystując zapytanie:
Kod:
insert into nazwa_tabeli values (wart1, wart2, wart3)
Załadowałem w pętli zawartość DataTable do tabeli SQLite.

Całość działa, ale nie tak szybko jak bym tego chciał, ok 1k rekordów zapisuje się mniej więcej 15sekund. Wg. mnie powinno to następować trochę szybciej.
Dalej szukam rozwiązania podobnego np. do tego jak bazę wczytuję do DataTable (używam SQLiteDataReader). Odczyt w tym przypadku trwa moment.

Fitter

Liczba postów : 12
Join date : 26/06/2013

Powrót do góry Go down

Powrót do góry

- Similar topics

 
Pozwolenia na tym forum:
Nie możesz odpowiadać w tematach