Friday, 26 August 2016

Micro ORM Dapper VB.Net 2013 SQL Server

Halo sobat blogger,

kali ini saya akan berbagi tentang ORM (Object Relational Mapping), 
Apa itu ORM...???

Object Relational Mapping (ORM) adalah sebuah framework yang dapat
menjembatani perbedaan sistembasis data yang bersifat relational dengan paradigma
pengembangan aplikasi yang berorientasi objek. Setiap objek yang akan memetakan
menjadi tabel-tabel pada basis data relasional dibungkus oleh suatu interface dengan
menerapkan konsep design pattern. Hal tersebut bertujuan untuk memudahkan lapisan
aplikasi (controller) mengakses data tersebut.
Untuk para developer yang telah menggunakan ORM seperti Linq to Sql, EF
maupun NHibernate pasti akan merasakan benefitnya seperti productivity maupun
maintability pada saat membangun aplikasi. Yang menjadi pertanyaan bagaimanakah performa aplikasi yang menggunakan ORM ini? Salah satu isu yang masih “menghantui”
ORM adalah masalah performa dalam pengaksesan data pada Database.
Bagi para developer yang ingin menggunakan ORM dengan performa yang lebih
baik dapat menggunakan Micro ORM. Terdapat banyak Micro ORM pada .Net seperti
Dapper, Peta POCO, FluentData dan lain-lain. Kebanyakan Micro ORM menggunakan
single file dan sangat mudah untuk menggunakannya pada suatu project. Pada artikel ini
akan dijelaskan bagaimana cara menggunakan salah satu Micro ORM yaitu Dapper.

Sumber : http://junindar.blogspot.co.id/2014/12/pengenalan-dapper-micro-orm-pada-vb-2013.html


Untuk mengetahui lebih lanjut, mari kita memulai membuat ORM :D

pertama kita buat database dulu di SQL Server

create database dbToko

create table produk(
       kodeProduk int primary key,
       namaProduk varchar(100),
       harga int,
       jumlah int
)

Selanjutnya kita buat stored procedure untuk proses insert, update, delete, dan select 

1. Sp Insert Produk

CREATE PROCEDURE sp_InsertProduk
       -- Add the parameters for the stored procedure here
       @kodeProduk int,
       @namaProduk varchar(100),
       @harga int,
       @jumlah int
AS
BEGIN
       -- SET NOCOUNT ON added to prevent extra result sets from
       -- interfering with SELECT statements.
       SET NOCOUNT ON;

       Insert Into produk values(@kodeProduk,@namaProduk,@harga,@jumlah)
END


2. Sp Update Produk

CREATE PROCEDURE sp_UpdateProduk
       -- Add the parameters for the stored procedure here
       @kodeProduk int,
       @namaProduk varchar(100),
       @harga int,
       @jumlah int
AS
BEGIN
       -- SET NOCOUNT ON added to prevent extra result sets from
       -- interfering with SELECT statements.
       SET NOCOUNT ON;

       Update produk Set namaProduk = @namaProduk, harga = @harga,
       jumlah = @jumlah Where kodeProduk = @kodeProduk
END

3. Sp Delete Produk

CREATE PROCEDURE sp_DeleteProduk
       -- Add the parameters for the stored procedure here
       @kodeProduk int
AS
BEGIN
       -- SET NOCOUNT ON added to prevent extra result sets from
       -- interfering with SELECT statements.
       SET NOCOUNT ON;

       Delete Produk Where kodeProduk = @kodeProduk
END


4. Sp Select Produk By Kode Produk


CREATE PROCEDURE sp_SelectProdukByKode
       -- Add the parameters for the stored procedure here
       @kodeProduk int
AS
BEGIN
       -- SET NOCOUNT ON added to prevent extra result sets from
       -- interfering with SELECT statements.
       SET NOCOUNT ON;

       Select * From produk Where kodeProduk = @kodeProduk

END

5. Sp Select Semua Produk 

CREATE PROCEDURE sp_SelectProduk
       -- Add the parameters for the stored procedure here
      
AS
BEGIN
       -- SET NOCOUNT ON added to prevent extra result sets from
       -- interfering with SELECT statements.
       SET NOCOUNT ON;

       Select * From produk

END


Ok, Selanjutnya kita buat visual basic project di visual studio.
untuk projectnya pilih yang Class Library, untuk nama projectnya DataAccess seperti gambar berikut :


Setelah membuat project, sekarang kita menambahkan library Dapper kedalam project, untuk menambahkan library harus terkoneksi dengan internet, caranya pilih TOOLS -> Library Package Manager -> Manage NuGet Packages Solution seperti pada gambar berikut :


Setelah proses Instalasi dapper selesai, tambahkan tiga(3) folder pada project, IDAO, DAO, dan Entity. 

Pada Folder Entity tambahkan sebuah Class dengan nama Produk Seperti Dibawah ini :

Public Class Produk
    Public Property KodeProduk() As String
    Public Property NamaProduk() As String
    Public Property Harga() As String
    Public Property Jumlah() As String
End Class

Pada Folder IDAO tambahkan sebuah Interface dengan nama IProdukDAO Seperti Dibawah ini :

Public Interface IProdukDAO
    Sub InsertProduk(ByVal Entity As Produk)
    Sub UpdateProduk(ByVal Entity As Produk)
    Sub DeleteProduk(ByVal KodeProduk As String)
    Function SelectProduk() As List(Of Produk)
    Function SelectProdukByKode(ByVal KodeProduk As String) As Produk
End Interface

Pada Folder DAO tambahkan sebuah Class dengan nama ProdukDAO Seperti Dibawah ini :

Imports System.Data.SqlClient
Imports Dapper

Public Class ProdukDAO
    Implements IProdukDAO

    Dim cmdAction As SqlCommand
    Dim server As String = "Server = .\SQLEXPRESS; Database = dbToko; Integrated Security = true"

    Public Sub DeleteProduk(KodeProduk As String) Implements IProdukDAO.DeleteProduk
        Using mycon As SqlConnection = New SqlConnection(server)
            mycon.Open()
            mycon.Query("sp_DeleteProduk", New With {KodeProduk},
            commandType:=CommandType.StoredProcedure)
        End Using
    End Sub

    Public Sub InsertProduk(Entity As Produk) Implements IProdukDAO.InsertProduk
        Using mycon As SqlConnection = New SqlConnection(server)
            mycon.Open()
            mycon.Query("sp_InsertProduk", Entity,
            commandType:=CommandType.StoredProcedure)
        End Using
    End Sub

    Public Function SelectProduk() As List(Of Produk) Implements IProdukDAO.SelectProduk
        Using mycon As SqlConnection = New SqlConnection(server)
            mycon.Open()
            Return mycon.Query(Of Produk)("sp_SelectProduk",
            commandType:=CommandType.StoredProcedure)
        End Using
    End Function

    Public Function SelectProdukByKode(KodeProduk As String) As Produk Implements IProdukDAO.SelectProdukByKode
        Using mycon As SqlConnection = New SqlConnection(server)
            mycon.Open()
            Return mycon.Query(Of Produk)("sp_SelectProdukByKode", New With {KodeProduk},
            commandType:=CommandType.StoredProcedure).FirstOrDefault()
        End Using
    End Function

    Public Sub UpdateProduk(Entity As Produk) Implements IProdukDAO.UpdateProduk
        Using mycon As SqlConnection = New SqlConnection(server)
            mycon.Open()
            mycon.Query("sp_UpdateProduk", Entity,
            commandType:=CommandType.StoredProcedure)
        End Using
    End Sub
End Class

Sampai disini DataAccess nya sudah selesai, selanjutnya kita tambahkan satu buah project baru didalam project dengan cara pilih menu File seperti pada gambar dibawah, projectnya yang ditambahkan adalah WindowsForm Application


Nama Projecnya Terserah, bebas sesuai keinginan :D
jika sudah desain form seperti dibawah ini :


Jika sudah Masukkan Source Code dibawah ini :

Imports DataAccess
Public Class Form1

    Dim MyProdukAccess As IProdukDAO = New ProdukDAO()
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Try
            Dim produk As New Produk With {.KodeProduk = TextBox1.Text,
            .NamaProduk = TextBox2.Text, .Harga = TextBox3.Text, .Jumlah =
            TextBox4.Text}

            MyProdukAccess.InsertProduk(produk)
            bindGrid()
            clearForm()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Try
            Dim produk As New Produk With {.KodeProduk = TextBox1.Text,
            .NamaProduk = TextBox2.Text, .Harga = TextBox3.Text, .Jumlah =
            TextBox4.Text}

            MyProdukAccess.UpdateProduk(produk)
            bindGrid()
            clearForm()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        MyProdukAccess.DeleteProduk(TextBox1.Text)
        bindGrid()
    End Sub

    Sub clearForm()
        TextBox1.Clear()
        TextBox2.Clear()
        TextBox3.Clear()
        TextBox4.Clear()

    End Sub

    Sub bindGrid()
        DataGridView1.DataSource = MyProdukAccess.SelectProduk()
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Try
            bindGrid()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

    Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
        Try
            If DataGridView1.Rows(e.RowIndex).Cells("KodeProduk").Value <> Nothing Then
                Dim myProduk As Produk = MyProdukAccess.SelectProdukByKode(DataGridView1.Rows(e.RowIndex).Cells("KodeProduk").Value.ToString())
                TextBox1.Text = myProduk.KodeProduk
                TextBox2.Text = myProduk.NamaProduk
                TextBox3.Text = myProduk.Harga
                TextBox4.Text = myProduk.Jumlah
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        clearForm()
    End Sub
End Class


Project-nya bisa Di Download Disni

Semoga Bermanfaat...

Happy Sharing :D

Tuesday, 23 August 2016

CRUD Sederhana PHP MySQL


Postingan kali saya akan berbagi cara membuat simple CRUD PHP MySQL, untuk tampilannya kurang lebih seperti gambar - gambar berikut :

1. Tampilan awal
 2. Halaman Tambah Data
3. Halaman Edit Data



Project lengkapnya bisa Download Disni

Terimakasih, Semoga bermanfaat


Monday, 22 August 2016

CRUD Android Studio Sqlite Sederhana


Pada postingan kali saya akan membahas tentang Android programming, yaitu membuat CRUD sederhana dengan Android Studio Sqlite. Ok, Langsung saja :

Pertama buat project dengan nama CRUD



 untuk company domai project terserah, disamakan juga gpp.... :D

ok, selanjutnya pilih target android devices :


Terus pilih Empty Activity :


Kemudian pilih Finish :



Selanjut kita buat layout seperti gambar berikut :


untuk design layoutnya tinggal copy xml dibawah ini kedalam activity_main.xml

<?xml version="1.0" encoding="utf-8"?>

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context="app.ouzn.com.crud.MainActivity">

  

    <RelativeLayout

        android:id="@+id/layout1"

        android:layout_width="match_parent"

        android:layout_height="300dp"

        android:layout_alignParentTop="true"

        android:layout_centerHorizontal="true">

  

        <TextView

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:textAppearance="?android:attr/textAppearanceMedium"

            android:text="Input Data Mahasiswa"

            android:id="@+id/textView"

            android:layout_alignParentTop="true"

            android:layout_centerHorizontal="true" />

  

        <TextView

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:textAppearance="?android:attr/textAppearanceMedium"

            android:text="NIM"

            android:id="@+id/textView2"

            android:layout_below="@+id/textView"

            android:layout_alignParentLeft="true"

            android:layout_alignParentStart="true" />

  

        <EditText

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:id="@+id/txtNim"

            android:layout_below="@+id/textView2"

            android:layout_alignParentLeft="true"

            android:layout_alignParentStart="true"

            android:layout_alignParentRight="true"

            android:layout_alignParentEnd="true" />

  

        <TextView

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:textAppearance="?android:attr/textAppearanceMedium"

            android:text="Nama"

            android:id="@+id/textView3"

            android:layout_below="@+id/txtNim"

            android:layout_alignParentLeft="true"

            android:layout_alignParentStart="true" />

  

        <EditText

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:id="@+id/txtNama"

            android:layout_below="@+id/textView3"

            android:layout_alignParentLeft="true"

            android:layout_alignParentStart="true"

            android:layout_alignParentRight="true"

            android:layout_alignParentEnd="true" />

  

        <TextView

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:textAppearance="?android:attr/textAppearanceMedium"

            android:text="Alamat"

            android:id="@+id/textView4"

            android:layout_below="@+id/txtNama"

            android:layout_alignParentLeft="true"

            android:layout_alignParentStart="true" />

  

        <EditText

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:id="@+id/txtAlamat"

            android:layout_below="@+id/textView4"

            android:layout_alignParentLeft="true"

            android:layout_alignParentStart="true"

            android:layout_alignParentRight="true"

            android:layout_alignParentEnd="true" />

  

        <Button

            android:layout_width="80dp"

            android:layout_height="wrap_content"

            android:text="Simpan"

            android:id="@+id/btnSimpan"

            android:layout_below="@+id/txtAlamat"

            android:layout_alignParentLeft="true"

            android:layout_alignParentStart="true" />

  

        <Button

            android:layout_width="80dp"

            android:layout_height="wrap_content"

            android:text="Edit"

            android:id="@+id/btnEdit"

            android:layout_alignTop="@+id/btnSimpan"

            android:layout_toRightOf="@+id/btnSimpan"

            android:layout_toEndOf="@+id/btnSimpan" />

  

        <Button

            android:layout_width="80dp"

            android:layout_height="wrap_content"

            android:text="Hapus"

            android:id="@+id/btnHapus"

            android:layout_alignTop="@+id/btnEdit"

            android:layout_toRightOf="@+id/btnEdit"

            android:layout_toEndOf="@+id/btnEdit" />

  

    </RelativeLayout>

    <RelativeLayout

        android:layout_width="match_parent"

        android:layout_height="150dp"

        android:layout_alignParentBottom="true"

        android:layout_alignParentRight="true"

        android:layout_alignParentEnd="true"

        android:id="@+id/relativeLayout2">

  

        <TextView

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="New Text"

            android:id="@+id/txtDataMhs"

            android:layout_alignParentTop="true"

            android:layout_alignParentLeft="true"

            android:layout_alignParentStart="true"

            android:layout_alignParentRight="true"

            android:layout_alignParentEnd="true" />

    </RelativeLayout>

  

</RelativeLayout>



Setelah itu tuliskan source code berikut di MainActivity.java

package app.ouzn.com.crud;



import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;



public class MainActivity extends AppCompatActivity {



    //Deklarasi variable

    SQLiteDatabase myDB = null;

    String TableName = "Mahasiswa";

    String Data = "";



    TextView dtMhs;



    Button bSimpan, bEdit, bHapus;

    EditText tNim, tNama, tAlamat;



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);



        dtMhs = (TextView)findViewById(R.id.txtDataMhs);



        bSimpan = (Button)findViewById(R.id.btnSimpan);

        bEdit = (Button)findViewById(R.id.btnEdit);

        bHapus = (Button)findViewById(R.id.btnHapus);



        tNim = (EditText)findViewById(R.id.txtNim);

        tNama = (EditText)findViewById(R.id.txtNama);

        tAlamat = (EditText)findViewById(R.id.txtAlamat);



        createDB();

        tampilData();



        bSimpan.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                simpan();

            }

        });

        bEdit.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                edit();

            }

        });

        bHapus.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                hapus();

            }

        });

    }



    //Method Clear TextField

    public void clearField(){

        tNim.setText("");

        tNama.setText("");

        tAlamat.setText("");

    }

    //Buat Method Create Database

    public void createDB(){

        try{

            myDB = this.openOrCreateDatabase("DBMHS",MODE_PRIVATE,null);



            myDB.execSQL("CREATE TABLE IF NOT EXISTS " +

                    TableName + "(NIM VARCHAR PRIMARY KEY, NAMA VARCHAR, ALAMAT VARCHAR);");





            //myDB.execSQL("Insert Into " + TableName + " Values('126','HusnulM','Lombok');");



        }catch (Exception e){

            //Log.e("Error", "Error", e);

        }

    }



    //Buat Method Tampilkan Data

    public void tampilData(){

        try{

            Data = "";

            clearField();

            Cursor c = myDB.rawQuery("Select * From " + TableName, null);



            int col1 = c.getColumnIndex("NIM");

            int col2 = c.getColumnIndex("NAMA");

            int col3 = c.getColumnIndex("ALAMAT");



            c.moveToFirst();



            if (c!= null){

                do{

                    String nimMhs = c.getString(col1);

                    String nmMhs = c.getString(col2);

                    String almtMhs = c.getString(col3);

                    Data = Data + nimMhs + " | " + nmMhs+ " | " + almtMhs + "\n";

                }

                while (c.moveToNext());

            }

            dtMhs.setText(Data);

        }catch (Exception e){

            dtMhs.setText(Data);

        }

    }



    //Method Simpan Data

    public void simpan(){

        myDB.execSQL("Insert Into " + TableName + " Values('" + tNim.getText() + "','" + tNama.getText() + "','" + tAlamat.getText() + "');");

        tampilData();

    }



    //Method Edit

    public void edit(){

            myDB.execSQL("Update " + TableName + " Set NAMA = '"+ tNama.getText() +"', ALAMAT = '"+ tAlamat.getText() +"' Where NIM = '"+ tNim.getText() +"';");

            tampilData();



    }



    //Method Hapus

    public void hapus(){

        myDB.execSQL("Delete From " + TableName + " Where NIM = '" + tNim.getText() + "';");

        tampilData();

    }



}

Jika sudah jalankan aplikasi, :D

yang mau project lengkapnya bisa Download Disini
Semoga bermanfaat. Amin
:D

Happy Coding ;)

Belajar SAP ABAP RAP

  Belajar SAP ABAP RAP: Pengenalan dan Konsep Dasar Restful ABAP Programming Model Kalau kamu seorang ABAPer yang mulai terjun ke dunia SAP...