Wednesday, 6 September 2017

Membuat CRUD sederhana dengan Laravel



Pada postingan kali ini saya akan sharing cara membuat proses Create, Read, Update, Delete atau yang lebih dikenal dengan istilah CRUD :D.


Ok langsung saja :

Create new project
untuk nama project-nya saya buat dengan nama crud

composer create-project --prefer-dist laravel/laravel crud

Create database
setelah membuat project laravel, selanjutnya kita buat database dan table di mysql, untuk nama databasenya kita buat sama denga nama projectnya yaitu : crud. Setelah itu kita buat table dengan nama Books dan struktur tablenya seperti berikut :



sampai disini persiapan awal sudah selesai, selanjutnya buka folder project laravel yang sudah kita buat dan ikut step-step berikut :

Setting koneksi
untuk setting koneksi kita buka file .env dan kita rubah menjadi seperti berikut :
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=crud
DB_USERNAME=root
DB_PASSWORD=

Tambahkan bootstrap css
agar tampilan web yang akan kita buat lebih baik, kita tambahkan css bootstrap di project kita. jika belum punya boostrap bisa di download Disini. Setelah itu copy file bootstrap.css yang ada di folder css ke folder public/css yang ada di project kita.



Membuat View
dalam view ini kita bisa mengatur tampilan website yang akan kita buat, view ini terletak di folder resource/views, adapun view-view yang akan kita buat disini adalah :

1. View index
    view index ini berfungsi sebagai tampilan awal dari website kita, tambahkan kode berikut     di view index.blade.php
<!DOCTYPE html>
<html>
<head>
    <title>CRUD Laravel</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="{{asset('css/bootstrap.css')}}">
</head>
<body>
    <div class="container">
        <div class="panel panel-default">
            <div class="panel-heading">
                <h4>Tutorial CRUD Laravel</h4>
            </div>
            <div class="panel-body">
                <form action="{{url('create')}}" method="get">
                    <div class="form-group">
                        <input type="submit" name="new" id="new" value="Entry Baru" class="btn btn-success">
                    </div>
                </form>
                <table class="table table-striped">
                    <thead>
                        <tr>
                            <th>Kode Buku</th>
                            <th>Judul</th>
                            <th>Deskripsi</th>
                            <th>Action</th>
                        </tr>
                    </thead>

                    <tbody>
                        @foreach($data as $key => $d)
                        <tr>
                            <td>{{ $d->kode_buku }}</td>
                            <td>{{ $d->judul }}</td>
                            <td>{{ $d->deskripsi }}</td>
                            <td>
                                <a href="{{url('read',array($d->id))}}">Read</a>
                                <a href="{{url('delete',array($d->id))}}">Delete</a>
                                <a href="{{url('edit',array($d->id))}}">Edit</a>
                            </td>
                        </tr>
                        @endforeach
                    </tbody>
                </table>
            </div>
        </div>
    </div>
</body>
</html>

2. view create.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>CRUD Laravel</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="{{asset('css/bootstrap.css')}}">
</head>
<body>
    <div class="container">
        <div class="panel panel-default">
            <div class="panel-heading">
                <h4>Tutorial CRUD Laravel</h4>
            </div>
            <div class="panel-body">
                <form action="{{url('insert')}}" method="post">
                    <div class="form-group">
                        <label for="kode">Kode Buku</label>
                        <input type="text" name="kode" id="kode" class="form-control" required="require">
                    </div>
                    <div class="form-group">
                        <label for="judul">Judul Buku</label>
                        <input type="text" name="judul" id="judul" class="form-control">
                    </div>                    
                    <div class="form-group">
                        <textarea id="deskripsi" name="deskripsi" class="form-control"></textarea>
                    </div>
                    <div class="form-group">
                        <input type="submit" name="send" id="send" value="Simpan" class="btn btn-success">{!!csrf_field()!!}                       
                    </div>
                </form>
            </div>
        </div>
    </div>
</body>
</html>


3. view edit.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>CRUD Laravel</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="{{asset('css/bootstrap.css')}}">
</head>
<body>
    <div class="container">
        <div class="panel panel-default">
            <div class="panel-heading">
                <h4>Tutorial CRUD Laravel</h4>
            </div>
            <div class="panel-body">
                <form action="{{url('update', $data->id)}}" method="post">
                    <!-- <input type="hidden" name="id" id="id" value="{{$data->id}}"> -->
                    <div class="form-group">
                        <label for="kode">Kode Buku</label>
                        <input type="text" name="kode" id="kode" value="{{$data->kode_buku}}" class="form-control">
                    </div>
                    <div class="form-group">
                        <label for="judul">Judul Buku</label>
                        <input type="text" name="judul" id="judul" value="{{$data->judul}}" class="form-control">
                    </div>                    
                    <div class="form-group">
                        <textarea id="deskripsi" name="deskripsi" class="form-control">
                            {!!$data->deskripsi!!}
                        </textarea>
                    </div>
                    <div class="form-group">
                        <input type="submit" name="send" id="send" value="Simpan" class="btn btn-success">{!!csrf_field()!!}                       
                    </div>
                </form>
            </div>
        </div>
    </div>
</body>
</html>

4. view read.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>CRUD Laravel</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="{{asset('css/bootstrap.css')}}">
</head>
<body>
    <div class="container">
        <div class="panel panel-default">
            <div class="panel-heading">
                <h4>Tutorial CRUD Laravel</h4>
            </div>
            <div class="panel-body">
                    <!-- <input type="hidden" name="id" id="id" value="{{$data->id}}"> -->
                    <div class="form-group">
                        <label for="kode">Kode Buku</label>
                        <input type="text" name="kode" id="kode" value="{{$data->kode_buku}}" class="form-control" readonly>
                    </div>
                    <div class="form-group">
                        <label for="judul">Judul Buku</label>
                        <input type="text" name="judul" id="judul" value="{{$data->judul}}" class="form-control" readonly>
                    </div>                    
                    <div class="form-group">    
                        <label for="desk">Deskripsi</label>    
                        <input type="text" name="desk" id="desk" value="{{$data->deskripsi}}" class="form-control" readonly>
                    </div>
                    <form action="{{url('back')}}" method="get">
                        <div class="form-group">
                            <input type="submit" value="Back" class="btn btn-success">
                        </div>
                    </form>
            </div>
        </div>
    </div>
</body>
</html>


Membuat Controller
controller ini berfungsi untuk menuliskan logic program (contohnya : query ke database)
untuk membuat controller kita jalan command line dan tuliskan command berikut :

php artisan make:controller BooksController
setelah itu dalam project kita akan terbentuk sebuah controller dengan nama BooksController yang trsimpan di folder app/Http/Controllers dan tambahkan kode berikut :

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use App\Books;
class BooksController extends Controller
{
    public function index(){
     $data=Books::all();
        return view('index',compact('data'));
    }

    public function back(){
     return redirect ('/');
    }
    
    public function create(){
     return view('create');
    }

    public function insert(Request $request){
     $data=new Books();
        $data->kode_buku=$request->get('kode');
        $data->judul=$request->get('judul');
        $data->deskripsi=$request->get('deskripsi');
        $data->save();
     return redirect ('/');
    }

    public function delete($id){
     $data=Books::find($id);
        $data->delete();
        return back();
    }

    public function edit($id){
     $data=Books::find($id);
     return view('edit',compact('data'));
    }

    public function update(Request $request, $id){     
     $data = Books::findOrFail($id);
        $data->kode_buku=$request->get('kode');
        $data->judul=$request->get('judul');
        $data->deskripsi=$request->get('deskripsi');
        $data->save();
     return redirect ('/')->with('alert-success','Data berhasil Diubah.');
    }

    public function read($id){
     $data=Books::find($id);
     return view('read',compact('data'));
    }
}

Membuat model
untuk membuat model tuliskan command berikut di command line :
php artisan make:model Books
Tuliskan kode berikut di model Books
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Books extends Model
{
    protected $table="Books";
 protected $primaryKey="id";
 protected $fillable=['kode_buku','judul','deskripsi'];
}


Routing
routing ini berfungsi untuk menghubungkan controller dengan view, routing ini kita tambahkan didalam folder routes/web.php dan tambahkan kode berikut :

Route::get('/','BooksController@index');

Route::get('back','BooksController@back');

Route::get('create','BooksController@create');

Route::post('insert', 'BooksController@insert');

Route::get('delete/{id}','BooksController@delete');

Route::get('edit/{id}','BooksController@edit');

Route::post('update/{id}', 'BooksController@update');

Route::get('read/{id}','BooksController@read');


jika sudah selesai semua, coba jalankan programnya melalui web browser.

Berikut screen shot dari aplikasi ini :

index

Read




Edit



Sekian sharing kali ini, semoga bermanfaat.
keep sharing..... :D









Tuesday, 5 September 2017

Membuat Project Baru di Laravel


Setelah membahas mengenal laravel pada postingan Sebelumnya, pada postingan kali ini saya akan sharing cara membuat project baru di laravel. Sebelum membuat project baru pastikan sudah meng-install composer laravel jika belum bisa di download Disini. untuk IDE saya sarankan menggunakan Visual Studio Code. 

Sebelum membuat project laravel, Pastikan komputer/laptop terhubung internet.

Ok lansung saja kita mulai step-step membuat project baru di laravel :

Buka command line di folder tempat kita akan meletakkan file project kita dengan cara klik kanan + tombol shift kemudian tuliskan command berikut :
contoh disini saya akan membuat project seperti digambar berikut :



Setelah command line dijalankan, tuliskan command berikut :
composer create-project --prefer-dist laravel/laravel nama_project

nama project yang saya buat adalah Latihan1, setelah itu tekan enter dan tunggu proses instalasi laravel sampai selesai.




Setelah proses instalasi selesai maka akan tercreate satu folder baru dengan Latihan1 dan strukture foldernya seperti berikut :


Sampai disini kita sudah berhasil membuat project baru di laravel dan kita bisa langsung menjalankan project melalui web browser, untuk menjalankan projectnya kita buka command line didalam folder project Latihan1 kemudian tuliskan command berikut :

php artisan serve


Setelah itu jalankan : http://localhost:8000/ di browser maka akan muncul tampilan seperti berikut :


Ok, sekian sharing kali ini semoga bermanfaat.
:D

Mengenal Laravel




Laravel merupakan salah satu framework PHP yang banyak digunakan oleh para web developer untuk membangun sebuah sistem berbasis web. Laravel juga sudah menerapkan konsep MVC (model view controller).

MVC adalah sebuah pendekatan perangkat lunak yang memisahkan aplikasi logika dari presentasi. MVC memisahkan aplikasi berdasarkan komponen- komponen aplikasi, seperti : manipulasi data, controller, dan user interface.
  1. Model, Model mewakili struktur data. Biasanya model berisi fungsi-fungsi yang membantu seseorang dalam pengelolaan basis data seperti memasukkan data ke basis data, pembaruan data dan lain-lain.
  2. View, View adalah bagian yang mengatur tampilan ke pengguna. Bisa dikatakan berupa halaman web. 
  3. Controller, Controller merupakan bagian yang menjembatani model dan view.

Beberapa fitur yang terdapat di Laravel :
  1. Bundles, yaitu sebuah fitur dengan sistem pengemasan modular dan tersedia beragam di aplikasi.
  2. Eloquent ORM, merupakan penerapan PHP lanjutan menyediakan metode internal dari pola “active record” yang menagatasi masalah pada hubungan objek database.
  3. Application Logic, merupakan bagian dari aplikasi, menggunakan controller atau bagian Route.
  4. Reverse Routing, mendefinisikan relasi atau hubungan antara Link dan Route.
  5. Restful controllers, memisahkan logika dalam melayani HTTP GET and POST.
  6. Class Auto Loading, menyediakan loading otomatis untuk class PHP.
  7. View Composer, adalah kode unit logikal yang dapat dieksekusi ketika view sedang loading.
  8. IoC Container, memungkin obyek baru dihasilkan dengan pembalikan controller.
  9. Migration, menyediakan sistem kontrol untuk skema database.
  10. Unit Testing, banyak tes untuk mendeteksi dan mencegah regresi.
  11. Automatic Pagination, menyederhanakan tugas dari penerapan halaman.

Menurut tulisan akun “kursuswebdesign” di Kompasiana.com, ada beberapa kelebihan PHP Framework Laravel, antara lain:

Tampilan Sintak Lebih Artistic
Berbagai sintaks pada Laravel tersaji dengan sangat artistik, laravel memperhatikan dengan betul tampilan sintaks yang digunakan, sehingga bukan hanya terlihat lebih rapi juga lebih indah dipandang.

Blade Tamplating
Blade templating akan membantu developer dalam membuat template yang lebih terstruktur serta dinamis, yaitu dengan cara memotong struktur pada template agar lebih mudah dalam pengembangan.

Sintak Mudah Dipahami
Selama menggunakan Laravel maka akan dipastikan kita tidak akan merasa kesulitan ketika harus membaca sintaks. Mamahami sintaks pada beberapa framework yang biasanya akan terasa sulit tidak berlaku pada Laravel. Penggunaan bahasa untuk pengoperasiaannya tergolong mudah untuk dipahami dan juga singkat. Kondisi ini akan lebih memudahkan para programmer dalam menggunakan sintaks meski pada awalnya termasuk yang belum pernah menggunakannya.

Dilengkapi dengan Aplikasi Eloquent ORM
Aplikasi Eloquent ORM akan Aplikasi Eloquent ORM akan melakukan penyederhanaan proses query ke database, sehingga SQL query sama sekali tidak akan digunakan. Terdengar sangat praktis bukan? Hal ini berlaku ketika kita akan mengambil semua data pada tabel users.

Mempunyai Dokumentasi yang Lengkap.
Laravel merupakan salah satu Framework PHP yang dirancanng dengan dokumentasi yang sangat lengkap, sehingga membuatnya lebih mudah ketika digunakan.

Composer yang Sangat Lengkap
Programmer pastinya sudah tidak asing lagi dengan package manager bagi PHP yang satu ini. Laravel didukung dengan composer yang sangat support, penggunaannya pun sangat mudah untuk diaplikasikan. Composer ini akan secara otomatis menginstall library yang dibutuhkan tanpa harus mendownload library atau fitur baru bagi aplikasi yang sedang dibuat. Sehingga proses mengupdate aplikasi pun akan lebih mudah dilakukan.

Menggunakan Kosep Model View Controller (MVC)
Laravel merupakan framework yang menerapkan penggunaan konsep MVC pada struktur aplikasi yang akan dibangun. Penggunaan konsep MVC ini sangat diperlukan untuk menghasilkan kode program yang lebih bersih dan juga terstruktur tertutama bagi pengembangan aplikasi dengan skala yang besar. Hal ini sangat berguna ketika akan melakukan update.
Framework Laravel ini bisa dipelajari dengan bimbingan NF Computer  (NF Computer) dengan durasi training 28 jam. Model kelas ada 3 pilihan yaitu Public Training dengan minimal jumlah peserta 6 orang, Exclusive Training dengan peserta minimal 2 orang secara full day training selama 4 hari kerja (weekday), dan Inhouse Training dengan peserta maksimal 10 orang per group dari satu institusi atau perusahaan. Kelebihan inhouse training dibanding 2 model kelas yang lain adalah waktu dan lokasi pelaksanaan sesuai dengan kesepakatan. (YTN)

Link Terkait :
https://idcloudhost.com/pengertian-dan-keunggulan-framework-laravel/

http://www.kompasiana.com/kursuswebdesign/kelebihan-php-laravel_5667e266d87a61cf2268c692

Friday, 17 February 2017

CRUD MS SQL SERVER ANDROID

Pada postingan kali ini, saya akan membahas membuat Insert, Update, Delete dengan android Studio dan Microsoft SQL Server. Biasanya programming dengan android menggunakan middleware untuk komunikasi antara aplikasi dengan database yaitu web service, tapi pada postingan kali ini saya akan memberikan contoh dimana aplikasi android akan langsung konek ke database tanpa perantara middleware (Webservice).

Ok Pertama Buat database di SQL Server dengan nama DBProducttbl, Kemudian buat table dengan nama Producttbl 
Atau bisa copy script berikut untuk membuat table di Sql Server :

CREATE TABLE [dbo].[Producttbl](
       [Id] [int] IDENTITY(1,1) NOT NULL,
       [ProName] [varchar](50) NULL,
       [ProDesc] [varchar](50) NULL,
       [OnDate] [datetime] NULL
)

Ok Selanjutnya Create New Project di Android Studio :

Pertama buat layout seperti gambar berikut :


Atau bisa copy xml file berikut :

<?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:background="#282828"
   
android:orientation="vertical"
   
tools:context="app.app.com.droidsql2.MainActivity">

    <
LinearLayout
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:orientation="vertical"
       
android:layout_alignParentTop="true"
       
android:padding="2dp">

        <
TextView
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content"
           
android:text="ADD PRODUCTS"
           
android:layout_marginTop="7dp"
           
android:typeface="sans"
           
android:textSize="35sp"
           
android:textColor="#ffffff"
           
android:gravity="center" />

        <
EditText
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content"
           
android:layout_marginTop="10dp"
           
android:textColor="#ffffff"
           
android:textColorHint="#ffffff"
           
android:textStyle="bold"
           
android:background="#5d5d5d"
           
android:padding="10dp"
           
android:hint="PRODUCT NAME"
           
android:textSize="20sp"
           
android:id="@+id/edtproname" />

        <
EditText
           
android:layout_width="match_parent"
            
android:layout_height="wrap_content"
           
android:textSize="16sp"
           
android:hint="DESCRIPTION"
           
android:textColor="#ffffff"
           
android:textColorHint="#ffffff"
           
android:textStyle="bold"
           
android:background="#5d5d5d"
           
android:padding="10dp"
           
android:inputType="textMultiLine"
           
android:maxLines="3"
           
android:minLines="2"
           
android:layout_gravity="top|left"
           
android:layout_marginTop="5dp"
           
android:id="@+id/edtprodesc" />

        <
LinearLayout
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content"
           
android:weightSum="3"
           
android:layout_marginTop="5dp"
           
android:orientation="horizontal">

            <
Button
               
android:layout_width="0dp"
               
android:layout_height="wrap_content"
               
android:layout_weight="1"
               
android:textColor="#ffffff"
               
android:textSize="20sp"
               
android:layout_margin="2dp"
               
android:padding="7dp"
               
android:layout_marginTop="10dp"
               
android:id="@+id/btnadd"
               
android:text="Add" />

            <
Button
                
android:layout_width="0dp"
               
android:layout_height="wrap_content"
               
android:layout_weight="1"
               
android:layout_margin="2dp"
               
android:textColor="#ffffff"
               
android:textSize="20sp"
               
android:padding="7dp"
               
android:layout_marginTop="10dp"
               
android:id="@+id/btnupdate"
               
android:text="Update" />

            <
Button
               
android:layout_width="0dp"
                
android:layout_height="wrap_content"
               
android:layout_weight="1"
               
android:textColor="#ffffff"
               
android:textSize="20sp"
               
android:layout_margin="2dp"
               
android:padding="7dp"
                
android:layout_marginTop="10dp"
               
android:id="@+id/btndelete"
               
android:text="Delete" />
        </
LinearLayout>

        <
ProgressBar
           
android:layout_width="wrap_content"
           
android:layout_height="wrap_content"
           
android:layout_gravity="center"
           
android:id="@+id/pbbar" />

        <
ListView
           
android:id="@+id/lstproducts"
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content"
            
android:divider="#808080"
           
android:layout_marginTop="5dp"
           
android:dividerHeight="1dp"
           
android:padding="5dp">

        </
ListView>
    </
LinearLayout>
</
RelativeLayout>


Tambahkan satu layout baru dengan nama lsttemplate.xml
kemudian masukkan code xml berikut :

<?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="5"
    android:padding="5dp"
    android:layout_marginTop="2dp">
  

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:textColor="#ffffff"
        android:layout_weight="1"
        android:textSize="15sp"
        android:text="1"
        android:id="@+id/lblproid"/>
  

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="4"
        android:textColor="#ffffff"
        android:textSize="15sp"
        android:text="MOTOROLA"
        android:id="@+id/lblproname"/>
  

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0"
        android:textColor="#ffffff"
        android:textSize="0sp"
        android:text="MOTOROLA"
        android:id="@+id/lblprodesc"/>

</LinearLayout>



Selanjutnya tambahkan class baru dengan nama : ConnectionClass.java 
Berikut detail source code dari ConnectionClass.java

package app.app.com.droidsql2;

  

  import android.annotation.SuppressLint;

  import android.os.StrictMode;

  import android.util.Log;

  

  import java.sql.Connection;

  import java.sql.DriverManager;

  import java.sql.SQLException;

  

  /**

 * Created by IT on 2/17/2017.

 */

  public class ConnectionClass {

    String ip = "192.168.88.197";

    String classs = "net.sourceforge.jtds.jdbc.Driver";

    String db = "ERP120";

    String un = "sa";

    String password = "Admin123456kr";

  

    @SuppressLint("NewApi")

    public Connection CONN() {

        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()

                .permitAll().build();

        StrictMode.setThreadPolicy(policy);

        Connection conn = null;

        String ConnURL = null;

        try {

  

            Class.forName(classs);

            ConnURL = "jdbc:jtds:sqlserver://" + ip + ";"

                    + "databaseName=" + db + ";user=" + un + ";password="

                    + password + ";";

            conn = DriverManager.getConnection(ConnURL);

        } catch (SQLException se) {

            Log.e("ERRO", se.getMessage());

        } catch (ClassNotFoundException e) {

            Log.e("ERRO", e.getMessage());

        } catch (Exception e) {

            Log.e("ERRO", e.getMessage());

        }

        return conn;

    }

}


Kemudian di MainActivity.java tuliskan source code seperti berikut : 

package app.app.com.droidsql2;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.SimpleAdapter;
import android.widget.Toast;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;

public class MainActivity extends AppCompatActivity {

    ConnectionClass connectionClass;
    EditText edtproname, edtprodesc;
    Button btnadd,btnupdate,btndelete;
    ProgressBar pbbar;
    ListView lstpro;
    String proid;

    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        connectionClass = new ConnectionClass();
        edtproname = (EditText) findViewById(R.id.edtproname);
        edtprodesc = (EditText) findViewById(R.id.edtprodesc);
        btnadd = (Button) findViewById(R.id.btnadd);
        btnupdate = (Button) findViewById(R.id.btnupdate);
        btndelete = (Button) findViewById(R.id.btndelete);
        pbbar = (ProgressBar) findViewById(R.id.pbbar);
        pbbar.setVisibility(View.GONE);
        lstpro = (ListView) findViewById(R.id.lstproducts);
        proid = "";

        FillList fillList = new FillList();
        fillList.execute("");


        btnadd.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View v) {
                AddPro addPro = new AddPro();
                addPro.execute("");

                edtproname.setText("");
                edtprodesc.setText("");
            }
        });

        btnupdate.setOnClickListener(new View.OnClickListener(){

            @Override            public void onClick(View v) {
                UpdatePro updatePro = new UpdatePro();
                updatePro.execute("");

                edtproname.setText("");
                edtprodesc.setText("");
            }
        });

        btndelete.setOnClickListener(new View.OnClickListener(){

            @Override            public void onClick(View v) {
                DeletePro deletePro = new DeletePro();
                deletePro.execute("");

                edtproname.setText("");
                edtprodesc.setText("");
            }
        });
    }

    public class FillList extends AsyncTask<String, String, String> {

        String z = "";

        List<Map<String, String>> prolist  = new ArrayList<Map<String, String>>();

        @Override        protected void onPreExecute() {

            pbbar.setVisibility(View.VISIBLE);
        }

        @Override        protected void onPostExecute(String r) {

            pbbar.setVisibility(View.GONE);
            Toast.makeText(MainActivity.this, r, Toast.LENGTH_SHORT).show();

            String[] from = { "A", "B", "C", "D" };
            int[] views = { R.id.lblproid, R.id.lblproname, R.id.lblprodesc, R.id.lbldesc };
            final SimpleAdapter ADA = new SimpleAdapter(MainActivity.this, 
            prolist, R.layout.lsttemplate, from, views);
            lstpro.setAdapter(ADA);


            lstpro.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                @Override                
                    public void onItemClick(AdapterView<?> arg0, View arg1,
                                        int arg2, long arg3) {
                    HashMap<String, Object> obj = (HashMap<String, Object>) 
                    ADA.getItem(arg2);
                    proid = (String) obj.get("A");
                    String proname = (String) obj.get("B");
                    String prodesc = (String) obj.get("C");
                    edtprodesc.setText(prodesc);
                    edtproname.setText(proname);
                    //     qty.setText(qtys);                }
            });



        }

        @Override        
           protected String doInBackground(String... params) {
            try {
                Connection con = connectionClass.CONN();
                if (con == null) {
                    z = "Error in connection with SQL server";
                } else {
                    String query = "select Id,ProName,ProDesc from Producttbl";
                    PreparedStatement ps = con.prepareStatement(query);
                    ResultSet rs = ps.executeQuery();

                    //ArrayList data1 = new ArrayList();                    
                   while (rs.next()) {
                        Map<String, String> datanum = new HashMap<String, String>();
                        datanum.put("A", rs.getString("Id"));
                        datanum.put("B", rs.getString("ProName"));
                        datanum.put("C", rs.getString("ProDesc"));
                        prolist.add(datanum);
                    }


                    //z = "Success";                }
            } catch (Exception ex) {
                z = "Error retrieving data from table";

            }
            return z;
        }
    }

    public class AddPro extends AsyncTask<String, String, String> {
        String z = "";
        Boolean isSuccess = false;

        String proname = edtproname.getText().toString();
        String prodesc = edtprodesc.getText().toString();

        @Override        
        protected void onPreExecute() {
            pbbar.setVisibility(View.VISIBLE);
        }

        @Override        protected void onPostExecute(String r) {
            pbbar.setVisibility(View.GONE);
            Toast.makeText(MainActivity.this, r, Toast.LENGTH_SHORT).show();
            if(isSuccess==true) {
                FillList fillList = new FillList();
                fillList.execute("");
            }
        }

        @Override        
         protected String doInBackground(String... params) {
            if (proname.trim().equals("") || prodesc.trim().equals(""))
                z = "Please enter User Id and Password";
            else {
                try {
                    Connection con = connectionClass.CONN();
                    if (con == null) {
                        z = "Error in connection with SQL server";
                    } else {

                        String dates = new SimpleDateFormat("MM/dd/yyyy", Locale.ENGLISH)
                                .format(Calendar.getInstance().getTime());
                        String query = "insert into Producttbl (ProName,ProDesc,OnDate) 
                        values ('" + proname + "','" + prodesc + "','" + dates + "')";
                        PreparedStatement preparedStatement = con.prepareStatement(query);
                        preparedStatement.executeUpdate();
                        z = "Added Successfully";
                        isSuccess = true;
                    }
                } catch (Exception ex) {
                    isSuccess = false;
                    z = "Exceptions";
                }
            }
            return z;
        }
    }

    public class UpdatePro extends AsyncTask<String, String, String> {

        String z = "";
        Boolean isSuccess = false;

        String proname = edtproname.getText().toString();
        String prodesc = edtprodesc.getText().toString();

        @Override        
         protected void onPreExecute() {
            pbbar.setVisibility(View.VISIBLE);
        }

        @Override        
         protected void onPostExecute(String r) {
            pbbar.setVisibility(View.GONE);
            Toast.makeText(MainActivity.this, r, Toast.LENGTH_SHORT).show();
            if(isSuccess==true) {
                FillList fillList = new FillList();
                fillList.execute("");
            }

        }

        @Override        
         protected String doInBackground(String... params) {
            if (proname.trim().equals("") || prodesc.trim().equals(""))
                z = "Please enter User Id and Password";
            else {
                try {
                    Connection con = connectionClass.CONN();
                    if (con == null) {
                        z = "Error in connection with SQL server";
                    } else {

                        String dates = new SimpleDateFormat("MM/dd/yyyy", Locale.ENGLISH)
                                .format(Calendar.getInstance().getTime());

                        String query = "Update Producttbl set ProName='"+proname+"',
                        ProDesc='"+prodesc+"' , OnDate='"+dates+"' where Id="+proid;
                        PreparedStatement preparedStatement = con.prepareStatement(query);
                        preparedStatement.executeUpdate();
                        z = "Updated Successfully";

                        isSuccess = true;
                    }
                } catch (Exception ex) {
                    isSuccess = false;
                    z = "Exceptions";
                }
            }
            return z;
        }
    }

    public class DeletePro extends AsyncTask<String, String, String> {

        String z = "";
        Boolean isSuccess = false;

        String proname = edtproname.getText().toString();
        String prodesc = edtprodesc.getText().toString();

        @Override        
        protected void onPreExecute() {
            pbbar.setVisibility(View.VISIBLE);
        }

        @Override        
         protected void onPostExecute(String r) {
            pbbar.setVisibility(View.GONE);
            Toast.makeText(MainActivity.this, r, Toast.LENGTH_SHORT).show();
            if(isSuccess==true) {
                FillList fillList = new FillList();
                fillList.execute("");
            }

        }

        @Override        
         protected String doInBackground(String... params) {
            if (proname.trim().equals("") || prodesc.trim().equals(""))
                z = "Please enter User Id and Password";
            else {
                try {
                    Connection con = connectionClass.CONN();
                    if (con == null) {
                        z = "Error in connection with SQL server";
                    } else {

                        String dates = new SimpleDateFormat("MM/dd/yyyy", Locale.ENGLISH)
                                .format(Calendar.getInstance().getTime());

                        String query = "delete from Producttbl where Id="+proid;
                        PreparedStatement preparedStatement = con.prepareStatement(query);
                        preparedStatement.executeUpdate();
                        z = "Deleted Successfully";
                        isSuccess = true;
                    }
                } catch (Exception ex) {
                    isSuccess = false;
                    z = "Exceptions";
                }
            }
            return z;
        }
    }
}



Terakhir rubah Manifest menjadi seperti berikut :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"    
package="app.app.com.droidsql2">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

    <application        
       android:allowBackup="true"        
       android:icon="@mipmap/ic_launcher"        
       android:label="@string/app_name"        
       android:supportsRtl="true"        
       android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>



Jika sudah jalankan aplikasinya :D




Untuk source code project lengkapnya bisa Di Download Disini

Terimakasih, Semoga Bermanfaat :D

ABAP CDS View Part 10 : Authorization & DCL untuk ABAP CDS

Authorization & DCL di ABAP CDS | Panduan Lengkap (PFCG, @AccessControl, DCL) Authorization & DCL untuk ABAP CDS — Pandua...