[ wex-alpha @ 13.05.2010. 09:00 ] @
PRVI DIO Nedavno sam pravio aplikaciju u WPF-u koja koristi MSSQL bazu podataka. U medjuvremenu sam pomislio da napravim istu aplikaciju koja ce biti "laksa" i imati manji memory print, te sam odmah pomislio na SQLite. WPF je sam po sebi cudna biljka, jer WinForms programer ce brlo brzo izgubiti zivce pokusavajuci nesto da uradi u WPF, a ista stvar radi bez problema u WinForms. Jedan od tih problemcica je i nepostojanje .Text property za label u WPF-u. Na primjer ovo je normalno u WinForms: Code: string nesto = "EliteSecurity"; label1.text = nesto; Dok se isti kod u wpf-u Crveni. Naravno, potrebno je googlati i naci rjesenje. Cilj ovog teksta je "demistificirat" koristenje SQLite u WPF-u. Ovaj tutorial ce imati nekoliko dijelova, gdje cu postepeno prikazati kako dobiti Full Blown WPF projekat. Taj projekat ce imat dvije forme. Jedna ce biti WinForms, a drug WPF forma. Obadvije forme ce koristiti istu bazu, ali razlika u GUI-u ce biti fantasticna. Postoje dva osnovna nacina: 1. Na internetu postoji dosta SQLite DLL-ova, koji se jednostavno mogu referencirati u projekat, te im normalno pristupati. 2. Instalirati neki od Providera za NET. Obadva nacina rade, ali savjetujem nacin broj 2. Dakle instalirati ADO.NET 2.0/3.5 provider za Visual Studio 2008. Potrebno je otici ovdje te skinuti instalacijski fajl. Instalacija je brza, te je na kraju potrebno odabrati verziju Visual Studia koju koristite. U nasem slucaju 2008. Provider koji smo instalirali nam omogucuje dizajniranje i manipulaciju SQLite bazom podataka unutar VS 2008 okruzenja. Sto je veoma zgodno. Takodjer podrzan je i SQLite Linq. Jedna opaska. Ako dizajniram SQLite nazu unutar VS 2008, nisam nasao opciju da se moze podesiti AutoIncrement. Moguce je da nisam dobro gledao :( Zato koristim drugi alat u kome dizajniram SQLite bazu. Alat je malen, besplatan i lagan za upotrebu. Alat se zove SQL Admin. Baza U nasem primjeru imamo bazu koja se zove korisnici, sa jednom tabelom i tri polja unutar nje: 1. ID - AutoIncrement 2. Ime - VarChar (50) 3. Prezime - VarChar (50) Bazu sami napravite (nije neki trud), te je dodajte u svoj projekat. Ako imate problema sa dodavanjem baze u projekat, mozete pogledati ovaj video, i kojem je prikazano kako se baza dodaje u projekat, te i ostale nap[rednije operacije nad bazom. Video nema zvuka, ali i ne treba. XAML ListView kontrola. Napravite novi WPF projekat, te unutar <grid> </grid> tagova stavite sljedeci XAML kod: Code: <ListView Margin="8,9,11,0" Name="listView1" ItemsSource="{Binding}" MinWidth="250" MinHeight="100" Height="357.742" VerticalAlignment="Top"> <ListView.View> <GridView> <GridViewColumn Header="ID" DisplayMemberBinding="{Binding Path=ID}"></GridViewColumn> <GridViewColumn Header="Ime" DisplayMemberBinding="{Binding Path=Ime}"></GridViewColumn> <GridViewColumn Header="Prezime" DisplayMemberBinding="{Binding Path=Prezime}"></GridViewColumn> </GridView> </ListView.View> </ListView> Dakle vas kod bi trebao izgledati nesto poput: Code: <Window x:Class="sqllajt.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="800" Width="600"> <Grid> <ListView Margin="8,9,11,0" Name="listView1" ItemsSource="{Binding}" MinWidth="250" MinHeight="100" Height="357.742" VerticalAlignment="Top"> <ListView.View> <GridView> <GridViewColumn Header="ID" DisplayMemberBinding="{Binding Path=ID}"></GridViewColumn> <GridViewColumn Header="Ime" DisplayMemberBinding="{Binding Path=Ime}"></GridViewColumn> <GridViewColumn Header="Prezime" DisplayMemberBinding="{Binding Path=Prezime}"></GridViewColumn> </GridView> </ListView.View> </ListView> </Grid> </Window> Naravno, ovaj kod mozete direktno Copy/Paste, i radit ce i kod vas. Sad imamo bazu, XAML. Jos nam nedostaje C# kod koji ce to sve prikazati. C# KOD Dole navedeni kod se naranvo moze mnogo bolje upakovati kroz metode i klase. Ali u u ovom primjeru ce biti samo stavljen u formu, da je pregledniji. Drugi dijelovi ovog tutorijala ce imati sav kod primjenjen kroz klase i metode. Otvorite .cs dokument, te dodajte sljedecu metodu: Code: public void PrikaziBazuuLB() { SQLiteConnection conn = new SQLiteConnection(@"data source=...\Debug\bazaa.s3db"); conn.Open(); SQLiteCommand cmd = new SQLiteCommand(" Select * from korisnici", conn); DataSet1 dt = new DataSet1(); SQLiteDataAdapter da = new SQLiteDataAdapter(cmd); DataTable tbl = new DataTable(); da.Fill(tbl); listView1.DataContext = tbl; da.Fill(dt); conn.Close(); } Naravno, sada je potrebno uraditi jos 2 stvari da bi uopste mogli da kompajlirate program: - morate napraviti referencu ka sql dll fajlu. Tacan naziv je: NET namespace->>System.Data.SQLite; - Dodajte using deklaraciju: using System.Data.SQLite; Sada mozete program kompajlirati. Nakon sto ste stavili metodu, jednostavno je pozovite na vama pozeljan nacin. Stavite Code: PrikaziBazuuLB() Ili u dugme: Code: private void button1_Click(object sender, RoutedEventArgs e) { PrikaziBazuuLB(); } ili odmah ispod konstruktora: Code: public Window1() { InitializeComponent(); PrikaziBazuuLB(); } ili u load form event: Code: private void Window_Loaded(object sender, RoutedEventArgs e) { PrikaziBazuuLB(); } To bi bilo sve sto trebate uraditi da listview prikaze sadrzaj baze. U sljedecem dijelu, cu prikazati kako primjeniti ADD, UPDATE and DELETE na vrijednostima prikazanim u listu boxu. Naravno, ovaj nacin koji sam prikazao je daleko od savrsenog, te postoji dosta mjesta gdje se moze poboljsati. To ostavljam vama da komentarisete :) Izvinjavam se na potencijalnim greskama navedenim u ovom dokumentu. [Ovu poruku je menjao wex-alpha dana 13.05.2010. u 10:59 GMT+1] [Ovu poruku je menjao wex-alpha dana 13.05.2010. u 12:35 GMT+1] |