Zapis DataTable do bazy SQLite

Zobacz poprzedni temat Zobacz następny temat Go down

Zapis DataTable do bazy SQLite

Pisanie by Fitter on 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

Zobacz profil autora

Powrót do góry Go down

Re: Zapis DataTable do bazy SQLite

Pisanie by Fitter on 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

Zobacz profil autora

Powrót do góry Go down

Zobacz poprzedni temat Zobacz następny temat Powrót do góry


 
Permissions in this forum:
Nie możesz odpowiadać w tematach