[WP8 + SQLite] Delete Data From SQLite In Windows Phone

Sebelumnya saya pernah memposting menggenai SQLite juga tetapi baru tentang menginput data. Sekarang saya akan membahas bagaimana menghapus data dari SQLite. Project yang saya gunakan pada postingan ini adalah lanjutan dari postingan sebelumnya. Saya hanya melakukan penambahan fitur long press selected item pada listbox yang sudah pernah saya berikan.

Pada sadarnya untuk menghapus data di SQLite cukup gampang hanya membutuhkan SQL untuk mendeletenya saja. hanya saja sebelum membuat SQL kita perlu pendeklarasian SQL comment terlebih dahulu, carannya adalah dengan :

SQLiteCommand sqlComm = new SQLiteCommand(dbConn);

Setelah memiliki SQL comment sekarang anda bisa menyiapkan sintak SQL yang ingin dieksekusi dan disimpan dalam SQL comment, cara seperti di bawah ini:

 sqlComm.CommandText = "delete from task where nama = '" + Budi+ "'";

SQL diatas adalah untuk mendelete data yang dimiliki budi, ini bisa dimanipulasi dengan menganti kriterianya seperti SQL biasa. atau bisa disesuaikan dengan ini dari textbox seperti ini.

sqlComm.CommandText = "delete from task where nama = '" + textBox1.text+ "'";

Jika sudah siap SQLnya dan sudah disimpan dalam SQL comment sekarang saatnya untuk mengeksekusi SQL comment. Berikut caranya.

sqlComm.ExecuteQuery<Task>();

Penjelasan diatas adalah dasar dari cara menghapus data di SQLite, untuk implementasi penghapusannya mungkin banyak ide yang muncul dan berbeda-beda untuk setiap individu. Untuk implementasinya saya akan menambahkan fitur hapus jika ada item list yang di tekan lama (hold) maka akan ada konfirmasi penghapusan data. Cara menambahkan even hold cukup menambahkan even pada list seperti gambar di bawah ini.

delete

Sedangkan di mainpage.xml.csnya saya tambahkan kode di bawah ini yang merupakan hasil modipikasi code sebelumnya yang kita bahas.

private string potong(int urutan, string isiList) {
            string temp =string.Empty;int i=0;
            foreach (var t in isiList.ToCharArray()) {
                if (i == urutan && !t.Equals(':')) 
                    temp += t;
                else if (t.Equals(':')) 
                    i++;
            }
            return temp;
        }
        private void DataList() {
            List<Task> retrievedTasks = dbConn.Table<Task>().ToList<Task>();
            DaftarTlp.Items.Clear();
            foreach (var t in retrievedTasks)
            {
                DaftarTlp.Items.Add(t);
            }
            TBTlp.Text = string.Empty;
            TBNama.Text = string.Empty;
        }
        private void DaftarTlp_Hold(object sender, System.Windows.Input.GestureEventArgs e)
        {
            if (DaftarTlp.SelectedIndex >=0)
            {
                MessageBoxResult result=MessageBox.Show("Delete","Are you sure ?",MessageBoxButton.OKCancel);
                if (result==MessageBoxResult.OK) {
                    Task task = new Task();
                    SQLiteCommand sqlComm = new SQLiteCommand(dbConn);
                    sqlComm.CommandText = "delete from task where nama = '" + potong(1,DaftarTlp.SelectedItem.ToString()) + "'";
                    sqlComm.ExecuteQuery<Task>();
                    DataList();
                }
            }
        }

Jika item list kita hold maka akan muncul message box yang berfungsi mengkonfirmasi apakah kita benar-benar mau menghapus data item yang kita pilih. Jika user memilih iya maka data akan terhapus. Kurang lebih itu ide dari saya, jika anda memiliki ide yang berbeda silahkan dimodifikasi sesuai kebutuhan anda tetapi pada dasarnya penghapusan itu sama.. Selamat mencoba.. 🙂

Advertisements

[WP8 + SQLite] Insert Data With SQLite In Windows Phone

Kali ini saya akan membahas mengenai pembuatan database di Windows Phone. Sebelumnya saya pernah memperkenalkan XML, XML pada dasarnya berbeda sekali dengan sql yang biasa kita gunakan di pemrograman desktop sehingga banyak orang yang sudah biasa dengan sql merasakan kesulitan menggunakan XML. Di Windows phone SQL juga bisa digunakan melalui RDBM SQLite. Sebelum kita membuat aplikasi sederhana yang terhubung dengan database kita terlebih dahulu harus memastikan beberapa hal, diantaranya:

1. Menginstal SQLite Windows Phone

Caranya cukup pilih Tools -> Extentions and Update dan kemudian pilih tab Online dan kemudian pilih SQLite Windows Phone dan kemudian Download. Setelah didownload maka secara otomatis akan meminta restart Visual Studio anda.

2. Langkah kedua adalah menginstal Packages sqlite_net dan sqlite_net_wp8.Caranya adalah dengan memilih Tools -> Nuget Package Manager -> Manage Nuget Package for Solution. Kemudian pilih sqlite_net kemudian instal, lakukan kembali langkah dua untuk package sqlite_net_wp8

3. Menambahkan references SQLite Windows Phone dengan cara klik kanan References->Existing Item->Windows Phone pilih SQLite windows Phone.

4. Mendowload file disini https://github.com/peterhuene/sqlite-net-wp8. Setelah download silahkan di extrak dan klik kanan pada project dan pilih Add->exsiting item->cari tempat anda meng-extract file tadi dan pilih sqlite.vcxproj. File ini berfungsi sebagai penghubung antara SQLite for Windows Phone SDK dan sqlite-net NuGet package.

http://khatrishashank.files.wordpress.com/2013/12/downloadwrapper.png

5. Klik kanan pada Solution Project anda dan pilih Configuration Manager dan pilih ARM.

http://khatrishashank.files.wordpress.com/2013/12/confchange.png

Sekarang kita baru bisa mendesain aplikasi kita, kali ini saya akan membuat aplikasi untuk menampilkan buku telpon. Berikut tampilan aplikasi yang saya buat:

1

Isi dari file xml MainPage.xml adalah berikut:
<Grid x:Name="LayoutRoot" Background="Transparent">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <!--TitlePanel contains the name of the application and page title-->
        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
            <TextBlock Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>
            <TextBlock Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
        </StackPanel>

        <!--ContentPanel - place additional content here-->
        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <TextBox x:Name="TBNama" HorizontalAlignment="Left" Height="72" Margin="188,22,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="222"/>
            <TextBlock HorizontalAlignment="Left" Margin="54,47,0,0" TextWrapping="Wrap" Text="Nama" VerticalAlignment="Top"/>
            <TextBox x:Name="TBTlp" HorizontalAlignment="Left" Height="72" Margin="188,92,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="222"/>
            <TextBlock x:Name="No_Telpon" HorizontalAlignment="Left" Margin="54,117,0,0" TextWrapping="Wrap" Text="No Telpon" VerticalAlignment="Top"/>
            <Button x:Name="BtnAdd" Content="Add" HorizontalAlignment="Left" Margin="317,169,0,0" VerticalAlignment="Top" Click="BtnAdd_Click"/>
            <ListBox Name="DaftarTlp" Margin="24,280,-24,0"></ListBox>
        </Grid>
        
    </Grid>

Setelah tampilan saatnya kita akan mulai mengubah isi dari MainPage.xml.cs, pertama kita harus membuat sebuah kelas yang berfungsi sebagai kelas enabler kolom database dengan pemprograman.

public sealed class Task
 {
     /// <summary>
     /// You can create an integer primary key and let the SQLite control it.
     /// </summary>
     [PrimaryKey, AutoIncrement]
     public int Id { get; set; }
     public string Nama { get; set; }
     public string Tlp { get; set; }
     public override string ToString(){
         return Id + ": " + Nama + " " + Tlp;
     }
 }

Letak koding diatas adalah di bawah kelas MainPage.xml.cs. Kemudian kita akan membuat sebuah perintah untuk menentukan nama database dan juga membuat konektor yang berada sebelum konstruktor MainPage().

public static string DB_PATH = Path.Combine(Path.Combine(ApplicationData.Current.LocalFolder.Path, "DBBukuTelpon.sqlite")); 
private SQLiteConnection dbConn;

Kemudian kita akan membuat event dari Tombol BtnAdd

 private void BtnAdd_Click(object sender, RoutedEventArgs e)
        {
            Task task=new Task(){
                Nama=TBNama.Text,
                Tlp=TBTlp.Text
            };
            dbConn.Insert(task);
            List<Task> retrievedTasks = dbConn.Table<Task>().ToList<Task>();
            DaftarTlp.Items.Clear();
            foreach (var t in retrievedTasks)
            {
                DaftarTlp.Items.Add(t);
            }
            TBTlp.Text = string.Empty;
            TBNama.Text = string.Empty;
        }

Jika Tombol BtnAdd diklik data yang diinput pada textboxt Nama, dan No Telpon akan disimpan ke dalam atribut Task dan akan diinsert ke tabel task. Setelah disimpan dalam tabel saatnya sekarang membaca isi dari tabel yang terbaru agar kita bisa memeriksa apakah data yang baru kita masukan sudah ada dalam tabel atau belum. Caranya adalah dengan menampilan semua data pada tabel ke dalam ListBox Daftar Telpon.

Tambahkan juga perintah di bawah ini di bawah konstruktor MainPage()

protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            /// Create the database connection.
            dbConn = new SQLiteConnection(DB_PATH);
            /// Create the table Task, if it doesn't exist.
            dbConn.CreateTable<Task>();
            /// Retrieve the task list from the database.
            List<Task> retrievedTasks = dbConn.Table<Task>().ToList<Task>();
            /// Clear the list box that will show all the tasks.
            DaftarTlp.Items.Clear();
            foreach (var t in retrievedTasks)
            {
                DaftarTlp.Items.Add(t);
            }
        }

        protected override void OnNavigatedFrom(NavigationEventArgs e)
        {
            if (dbConn != null)
            {
                /// Close the database connection.
                dbConn.Close();
            }
        }

Jika sudah sampai pada tahap ini berarti maka program anda sudah selesai. Project ini hanya bisa menginput data saja sedangkan untuk penghapusan akan saya bahas pada project selanjutnya. See You.. 🙂

%d bloggers like this: