Obiecałem tutek do SQLite i C++/CLI:
I. Na początek najlepiej ściągnąć jakiegoś admia do tej bazy danych, polecam SQLite Administrator:
http://sqliteadmin.orbmu2k.de/
ale są też inne.
Jeśli nie znamy SQL, to nie trzeba się martwić, jest też tryb graficzny.
Tworzymy nową bazę(Baza danych->Nowa), nadajemy jej nazwę "base" i wklejamy w zakładce "Zapytanie SQL" poniższy kod:
Kopiuj
CREATE TABLE [table1] (
[col1] TEXT NULL,
[col2] TEXT NULL
);
INSERT INTO table1 ( col1, col2 ) VALUES ( "Teks w kolumnie 1.", "Teks w kolumnie 2." );
II. Mamy bazę, więc przechodzimy do C++/CLI:
Musimy zainstalować tzw. prowider do SQLite. Dobrze, że znalazł się, ktoś kto tak pięknie, to zrobił.
Pobieramy ADO.NET 2.0 Provider for SQLite:
http://sourceforge.net/projects/sqlite-dotnet2/
Z instalacją nie powinniśmy mieć problemu, wykrywa naszego Visual'a samodzielnie(jak się zatnie przy wyborze, trzeba poczekać).
Tworzymy nowy projekt Windows Form Application.
Teraz skopiujemy naszą bazę do folderu z projektem. Domyślny folder na projekty jest w "Moje Dokumenty/Visual Studio 2008\Projects" wchodzimy w folder z nazwą projektu, tam będzie kolejny folder o tej samej nazwie, wchodzimy do niego i kopiujemy tam bazę.
Musimy dodać referencję do klasy obsługującej bazę SQLite. Wchodzimy w:
"Project->'nazwa_projektu' properties->Common Properties->Framework and References" po prawej stronie klikamy "Add New Reference" i wybieramy z listy "System.Data.SQLite".
Przechodzimy do kodu i na początku po dodawanych "namespace" dodajemy do SQLite:
using namespace
Kopiuj
using namespace System::Data::SQLite;
III. Tworzymy 4 Buttony i DataGridView.
- Wyświetlanie danych - button1
W designerze klikamy 2x na button1, aby przejść do jego zdarzenia Click. Wklejamy tam poniższy kod:
Kopiuj
SQLiteConnection ^conn = gcnew SQLiteConnection("Data Source = base.s3db;"); // Tworzymy nowe połączenie z bazą, base.s3db, to nasza baza danych
SQLiteDataAdapter ^adapter = gcnew SQLiteDataAdapter("SELECT * FROM table1;",conn); // Tworzymy adapter i zapytanie wybierające wszystkie elementy z tabeli "tabela1"
DataTable ^table = gcnew DataTable(); // Bardzo pomocny obiekt do pracy na wynikach zapytania
adapter->Fill(table); // wypełniamy DataTabla danymi z wyniku zapytania
dataGridView1->DataSource = table; // Przypisujemy dane z DataTabla do naszego GridView
Możemy skompilować projekt, wcisnąć buttona i cieszyć się z wyświetlonych danych w DataGridView.
2. Dodawanie danych(INSERT INTO) - button2
W designerze klikamy 2x na button2, aby przejść do jego zdarzenia Click. Wklejamy tam poniższy kod:
Kopiuj
SQLiteConnection ^conn = gcnew SQLiteConnection("Data Source = base.s3db;"); // Tworzymy nowe połączenie z bazą, base.s3db, to nasza baza danych
SQLiteCommand ^command = gcnew SQLiteCommand(conn); // Tworzymy nowe zapytanie
DateTime ^time = gcnew DateTime(); // Tworzymy nową datę
conn->Open(); // Otwiarcie połączenia
command->CommandText = "INSERT INTO table1 (col1, col2) Values( 'Data i czas dodania:"+time->Now.Now.ToString()+"' , 'Data i czas dodania:"+time->Now.Now.ToString()+"' );"; // Treść zapytania
command->ExecuteNonQuery(); // Wykonanie zapytania
conn->Close(); // Zamyknięcie połączenia
button1_Click(this, e); // Wywołujemy kliknięcie button1 aby zaktualizowało nam GridView
3. Zmiana danych(UPDATE) - button3
W designerze klikamy 2x na button3, aby przejść do jego zdarzenia Click. Wklejamy tam poniższy kod:
Kopiuj
SQLiteConnection ^conn = gcnew SQLiteConnection("Data Source = base.s3db;"); // Tworzymy nowe połączenie z bazą, base.s3db, to nasza baza danych
SQLiteCommand ^command = gcnew SQLiteCommand(conn); // Tworzymy nowe zapytanie
DateTime ^time = gcnew DateTime(); // Tworzymy nową datę
conn->Open(); // Otwiarcie połączenia
command->CommandText = "UPDATE table1 SET col1 = '1. Zmieniono: "+time->Now.Now.ToString()+"',col2 = '2. Zmieniono: "+time->Now.Now.ToString()+"' WHERE rowid = ( SELECT min(rowid) FROM table1 );"; // Treść zapytania, zmienia nam pierwszy wiersz, dodaje aktualny czas i datę do kolumny
command->ExecuteNonQuery(); // Wykonanie zapytania
conn->Close(); // Zamyknięcie połączenia
button1_Click(this, e); // Wywołujemy kliknięcie button1 aby zaktualizowało nam GridView
4. Usuwanie danych(DELETE) - button4
W designerze klikamy 2x na button4, aby przejść do jego zdarzenia Click. Wklejamy tam poniższy kod:
Kopiuj
SQLiteConnection ^conn = gcnew SQLiteConnection("Data Source = base.s3db;"); // Tworzymy nowe połączenie z bazą, base.s3db, to nasza baza danych
SQLiteCommand ^command = gcnew SQLiteCommand(conn); // Tworzymy nowe zapytanie
conn->Open(); // Otwiarcie połączenia
command->CommandText = "DELETE FROM table1 Where rowid = ( SELECT min(rowid) FROM table1 );"; // Treść zapytania, usuwamy 1 rekord w tabeli
command->ExecuteNonQuery(); // Wykonanie zapytania
conn->Close(); // Zamyknięcie połączenia
button1_Click(this, e); // Wywołujemy kliknięcie button1 aby zaktualizowało nam GridView
Buttona ten usuwa pierwszy rekord w tabeli.
<font size="2">Jeśli ktoś ma uwagi, to może pisać, temat w obserwowanych.
Pozdrawiam,
Arrowman
P.S. Jeśli ktoś chce cały kod albo projekt w zip, to na pw, albo mail. Nie chcę tutaj śmiecić i nie mam hostingu.
</span>
<font size="2">Jest już artykuł. Można pobrać tam projekt.</span>