Pages

Membuat REST API Menggunakan MEN (MongoDB, ExpressJS, NodeJS)

Jumat, 05 Oktober 2018


Apa itu REST API? Di sana terdapat dua kata yaitu REST dan API. REST(REpresentational State Transfer) adalah desain arsitektur yang menyediakan standar cara berkomunikasi antar sistem komputer di dalam web sehingga komunikasi antar komputer menjadi lebih mudah, seperti itu sederhanannya. Sedangkan untuk API(Application Programming Interface) sebenarnya hanya fungsi atau method, ketika kalian membuat fungsi atau method di bahasa pemrograman apapun itu sudah bisa disebut API, jadi jangan sampai pusing hanya karena istilah :D.

Jadi apa itu REST API? Yap, REST API adalah API yang cara mengimplementasikannya menggunakan konsep REST. Simpelnya seperti ini, biasanya untuk mengimplementasikan suatu API kita hanya tinggal menulis nama fungsi atau method-nya saja, sedangkan jika menggunakan konsep REST, kita harus melakukannya menggunakan HTTP Request.

Sebelum mulai pastikan komputermu sudah ter-install:
- Node/NPM
- MongoDB
- Postman

Note: Jika kamu menggunakan Windows, saya anjurkan untuk menginstall UNIX-like environment seperti Cygwin

Oke, ayo mulai!

Install Library

Sebelumnya kita buat terlebih dahulu folder untuk aplikasi REST API kita, buka terminal  dan jalankan command:
mkdir men-rest-api && cd men-rest-api

Note: Kenapa 'MEN'? Karena tech stacks yang kita pakai MongoExpressNode! :D

Selanjutnya kita akan men-generate file package.json
npm init

Kamu bisa tekan enter pada semua pertanyaan untuk mengatur semuanya dengan setting-an default.

Setelah proses generate file package.json selesai, kita bisa mulai meng-install library yang kita butuhkan untuk aplikasi.
npm install --save express body-parse mongoose

Di command yang kita jalankan sebelumnya, kita meng-install 3 library
  • express (ExpressJS)
    Di website resminya tertulis "Express is a minimal and flexible Node.js web application framework that provides a robust set of features for web and mobile applications.", jadi intinya ExpressJS adalah web framework untuk NodeJS yang memiliki banyak fitur yang akan memudahkan kita dalam pengembangan aplikasi web dan mobile.
  • body-parser
    Library ini digunakan sebagai middleware yang akan membantu kita dalam mem-parsing request body dari user atau client, sehingga memudahkan kita dalam mengakses request body.
  • mongoose
    Tertulis di website resminya "Elegant mongodb object modeling for nodejs". Library ini akan banyak membantu kita dalam berkomunikasi dengan database mongodb.
Selain meng-install library yang dibutuhkan untuk aplikasi kita juga akan meng-install library yang akan membantu kita saat proses development.
npm install --save-dev @babel/core @babel/node @babel/preset-env nodemon
  • Babel
    Babel adalah library yang biasa digunakan untuk meng-convert code javascript yang menggunakan fitur ECMAScript 2015+ ke versi javascript sebelumnya. Dikarenakan NodeJS belum sepenuhnya memiliki fitur dari ECMAScript 2015, kita harus menggunakan Babel untuk meng-convertnya.
    • @babel/core core compiler babel yang akan meng-convert code javascript kita.
    • @babel/node built-in CLI yang digunakan untuk meng-compile file melalui command line.
    • @babel/preset-env jadi library ini membuat kita bisa menggunakan syntax ECMAScript terbaru tanpa harus me-manage transformasi ECMAScript versi berapa yang dibutuhkan browser atau target kita.
  • Nodemon
    Nodemon adalah library yang berguna untuk otomatis me-restart server node ketika ada perubahan yang terjadi dalam source code kita.

Let's Code!

Pertama kita akan lebih banyak mengkonfigurasi aplikasi REST API kita, seperti menggunakan body-parser untuk mem-parsing request body yang masuk, connect ke database, menjalankan server dan meng-import file route(kita akan membuatnya setelah ini).
index.js
Selanjutnya kita akan membuat file route yang telah kita import sebelumnya. File route ini bertugas untuk menentukan perintah apa yang akan dijalankan sesuai dengan URL dari HTTP Request yang diterima.
route.js
Setelah itu kita akan membuat controller yang berfungsi untuk meng-handle dan memproses request yang masuk seperti mengambil list todo dari database, membuat todo baru ke database, menghapus todo dan meng-update todo.
controller.js
Selanjutnya buat file model yang berisi schema database mongodb kita.
model.js
Terakhir kita akan membuat script agar ketika aplikasi kita dijalankan otomatis menggunakan nodemon dan babel.
package.json

Test! :D

Jalankan command npm start di dalam directory aplikasi REST API kita dan kita bisa langsung masuk ke http://localhost:3000 untuk melihat hasilnya.


Untuk test apakah REST APInya berjalan kita akan menggunakan Postman.
POST [/api] Membuat todo baru


GET [/api/] Mengambil semua todo


PUT [/api/{_id}] Meng-update todo


GET [/api/{_id}] Mengambil todo berdasarkan _id

Note: Kalian bisa melihat keseluruhan code di Github

Referensi:
https://medium.com/@vipinswarnkar1989/mern-stack-crud-app-using-create-react-app-react-redux-3299059db793
- https://www.codecademy.com/articles/what-is-rest
https://mongoosejs.com/
https://github.com/expressjs/body-parser

Hello NodeJS!

Kamis, 13 September 2018


Pada kesempatan kali ini saya ingin mengajak kalian semua untuk menyapa NodeJS, yap ini adalah ritual atau tradisi yang biasa dilakukan untuk mengenal suatu bahasa pemrograman. Ada yang belum tau apa itu NodeJS? Kamu bisa klik di sini untuk mengetahui lebih lanjut tentang apa itu NodeJS.

Install NodeJS

Windows:
Bagi pengguna windows kalian bisa langsung download nodejs di situs resminya dan ikuti langkah-langkahnya.

MacOS:
Bagi pengguna MacOS kalian bisa lakukan seperti pengguna windows atau jika kalian menginstall Homebrew di MacOS kalian, kalian bisa menginstall nodejs dengan menjalankan perintah brew install node di terminal.

Linux:
Bagi pengguna Ubuntu/Debian-based kalian bisa menjalankan perintah sudo apt-get install nodejs && sudo apt-get install npm dan bagi pengguna Arch-based kalian bisa menjalankan perintah sudo pacman -S nodejs npm.

Untuk mengecheck apakah nodejs dan npm sudah terinstall kalian bisa menjalankan perintah node -v && npm -v, perintah tersebut berfungsi untuk menampilkan versi dari node dan npm.




Hello NodeJS!

Sekarang, ayo kita sapa NodeJS. Pertama buat file bernama server.js, kemudian buka terminal kalian dan rubah direktorinya sesuai dengan lokasi file server.js tersebut. Selanjutnya buka file tersebut dan copy-paste kode di bawah ini.

const http = require('http');
const server = http.createServer();

server.on('request', (request, response) => {
  response.writeHead(200, {'Content-Type':'text/plain'});
  response.write('Hello world');
  response.end();
});

server.listen(3000, () => {
  console.log('Node server created at port 3000');
});
Kemudian jalankan perintah node server.js, selanjutnya buka browser dan masuk ke localhost:3000, dan NodeJS akan menyapa kita semua! :)

Saya akan sedikit menjelaskan tentang kode yang telah kalian copy-paste barusan. Di baris pertama kita merequire module http yang berfungsi untuk membantu kita menangani operasi http, kemudian kita memanggil 'createServer' yang fungsinya persis seperti namanya yaitu membuat server.

Di baris kedua ada fungsi on, dengan argumen pertama request yang maksudnya untuk menandai bahwa fungsi on ini untuk menangani request yang masuk, kemudian argumen kedua adalah callback dengan dua parameter yaitu request yang berisi informasi tentang request yang masuk dan response yang berisi informasi tentang response keluar.

Di baris ketiga ada fungsi listen yang memerintahkan nodejs untuk mendengar atau berjalan di port 3000.

Demikian yang bisa saya bagikan, semoga bermanfaat khususnya bagi yang baru mempelajari NodeJS. Kalau ada yang salah dari apa yang saya tulis, jangan ragu untuk mengkoreksi di kolom komentar :)


Referensi:

Apa itu NodeJS?

Rabu, 05 September 2018


Sebelumnya yang kita tau javascript itu hanya untuk membuat website kita terlihat lebih interaktif, sekarang javascript bisa kita pakai untuk membuat apapun yang kita mau! (Oke ini agak lebay) :D Itu semua berkat teknologi bernama NodeJS, apa itu NodeJS? Di dokumentasi officialnya tertulis "NodeJS is a JavaScript runtime built on Chrome's V8 JavaScript engine.". Apa maksudnya? Kalau kamu sudah pernah belajar PHP, NodeJS itu seperti Apachenya atau kalau kamu sudah pernah belajar Java, NodeJS itu seperti JVM(Java Virtual Machine)nya. Kalau kamu belum pernah mempelajari keduanya, NodeJS itu seperti suatu mesin yang membuat javascript yang tadinya hanya bisa berjalan di browser menjadi bisa berjalan langsung di komputer kalian, seperti itu kira-kira analoginya.

Selanjutnya, bagaimana NodeJS bekerja? Tidak seperti bahasa pemrograman lainnya yang bekerja secara multi-thread(satu tugas dijalankan oleh satu thread) dan bersifat synchronous(berurutan)/blocking, yang artinya ketika satu tugas sedang dijalankan maka tugas selanjutnya harus menunggu sampai tugas sebelumnya selesai. Javascript bekerja secara single-thread begitu juga dengan NodeJS. Sebenarnya NodeJS tidak benar-benar menggunakan single-thread, karena yang menggunakan single-thread hanya event-loopnya saja, event-loop ini hanya untuk menampung semua tugas yang diberikan dan kemudian mendelegasikannya ke background workers. Untuk background workersnya sendiri menggunakan library bernama Libuv yang akan menangani tugas-tugas secara asynchronous(tidak berurutan)/non-blocking, yang artinya tugas termudah dan tercepatlah yang akan terlebih dahulu diselesaikan dan akan langsung diberikan hasilnya kepada event-loop tanpa mempedulikan urutan masuknya tugas.

Masih belum paham? Bayangkan kamu bos di suatu perusahaan, tugasmu adalah menulis daftar tugas apa saja yang dibutuhkan demi kemajuan perusahaanmu. Kemudian orang kepercayaanmu datang untuk mengambil daftar tersebut dan mendelegasikan tugas-tugas tersebut kebawahannya, ketika salah satu tugas tersebut selesai orang kepercayaanmu itu langsung melaporkannya kepadamu. Tetapi kamu tetap sibuk menulis semua daftar pekerjaan, jadi kamu hanya menerima hasilnya dan memberikan daftar lain ke orang kepercayaanmu itu, seperti itulah kira-kira analoginya.

Demikian yang bisa saya bagikan, semoga bermanfaat khususnya bagi yang baru mempelajari NodeJS. Kalau ada yang salah dari yang saya tulis, jangan ragu untuk mengkoreksi di kolom komentar :)


Referensi:

Di Rumah Terus, Terus Di Rumah

Senin, 20 Maret 2017

Judul yang aneh ya? Haha, Saya sengaja membuat seperti itu karena kali ini saya ingin bercerita tentang kegiatan produktif yang dapat dilakukan dari rumah.

Saya sebagai Programmer pemula tidak lepas dari yang namanya belajar, karena teknologi terus berkembang , tidak ada waktu bagi saya yang sedang memperlajarinya untuk bersantai atau bahkan berhenti mempelajarinya. Karena ilmu teknologi tidak akan pernah selesai, ada saja teknologi baru yang bermunculan setiap saat. Dengan begitu akan lebih mudah bagi saya untuk belajar di rumah tanpa menghabiskan waktu di perjalanan. Dan tentu saja yang namanya belajar di rumah harus menggunakan koneksi internet.

Saya pun teringat ketika kelas 2 SMK, angkatan saya melakukan kunjungan Industri ke Bogor Cyberpark (sekarang namanya Tamansari Cyber) yang berlokasi di Jl. Cyberpark Residence, Mulyaharja, Bogor Selatan, Kota Bogor, Jawa Barat. Di sana saya dan teman-teman di kenalkan dengan rumah yang dibangun dengan konsep Cyberhome, konsep Cyberhome ini dibangun dengan mengusung Real SOHO (Small Office Home Office) yang sesungguhnya dan juga didukung dengan akses internet supercepat dari 100Mbps hingga 10Gbps, dengan kecepatan upload dan download sama! Saat itu pun seketika terbayang tinggal di Cyberhome tersebut, dan aktivitas belajar pemrograman pun akan lebih efektif dan efisien dengan internet supercepat yang dimiliki Cyberhome.

Dari pengalaman saya belajar pemrograman secara otodidak itu kurang efektif karena kita tidak tau dari mana harus memulai, jadi banyak ilmu yang terlewati. Jadi akan lebih efektif jika kita belajar dengan pembimbing, dan kabar baiknya Cyberhome telah bekerja sama dengan mitra yang dapat membantu kita belajar mengenai TIK seperti Web Develpment, Start Up, Aplikasi, Software dan sebagainya. Sehingga selain mendapatkan kecepatan internet yang supercepat kita bisa belajar mengenai TIK dengan mitra Cyberhome jika kita tinggal di Cyberhome.

Selain belajar, bekerja dari rumah pun banyak sekali keuntungannya, walaupun bekerja dirumah itu identik dengan pengangguran. Jangankan orang lain yang melihatnya, orang tua saya pun bingung dan bahkan tidak mengerti mengapa saya di depan laptop terus. Bahkan lebih menyebalkannya lagi saya sering dianggap bermain game di laptop haha. Salah satu keuntungannya yaitu waktu berharaga bersama keluarga menjadi semakin banyak, karena kita bekerja di rumah dan tidak perlu pergi ke kantor. Jangan khawatir tentang pekerjaan apa yang bisa dilakukan di rumah, karena pada zaman sekarang banyak sekali pekerjaan yang tidak mengharuskan kita pergi ke kantor. Salah satunya adalah Programmer, Designer, Penulis Artikel dan sebagainya yang bisa dikerjakan di rumah, bahkan mengerjakan project dari luar negeri dan mengerjakannya di rumah adalah sesuatu yang mungkin dilakukan pada zaman sekarang.

Nah, untuk menunjang pekerjaan-pekerjaan tersebut tentunya dibutuhkan fasilitas yang memumpuni. Yap! Cyberhome adalah pilihan yang tepat untuk menunjang kebutuhan tersebut! Selain menyediakan internet supercepat, Cyberhome memiliki potensi untuk membuka peluang kerja dari rumah mengenai TIK dengan mitra yang telah bekerja sama dengan Cyberhome loh, sangat membantu bukan!?

Kegiatan selanjutnya adalah bisnis. Sebenarnya saya sendiri belum punya pengalaman dalam berbisnis, tetapi melihat perkembangan teknologi pada zaman sekarang, bisnis menjadi terlihat mudah. Banyaknya situs-situs online berupa Market Place yang dapat membantu untuk mempromosikan atau mengenalkan produk kita ke masyarakat, membuat pelaku bisnis dapat memangkas biaya iklan. Dan karena hal tersebut bersifat online tentunya dapat dilakukan di rumah! Bicara tentang online tentunya kita berbicara tentang internet. Dan berbicara tentang rumah dan internet tentunya kita berbicara Cyberhome! Selain disediakan internet supercepat oleh Cyberhome, kita juga dapat berkolaborasi mengenai bisnis terutama dalam bidang IT secara langsung dengan pelaku/profesional industri TIK dalam satu kawasan, bahkan jika kamu ingin memiliki toko online sendiri kamu bisa menjalankannya dengan server sendiri di rumah! Wow, sangat menguntungkan ya kan!?

Dan yang terakhir adalah rekreasi, setelah lelah belajar, bekerja dan berbisnis tentunya kita membutuhkan rekreasi. Banyak sekali rekreasi yang bisa dilakukan di rumah, salah satunya adalah menonton film online, mendengarkan lagu dari berbagain situs atau aplikasi, bermain game online dan juga browsing media social. Semua kegiatan rekreasi tersebut akan sangat menyenangkan jika didukung dengan internet supercepat, sehingga tidak akan ada buffering, lemot atau lag. Sekali lagi Cyberhome adalah pilihan tepat untuk menjalankan aktifitas tersebut.

Kesimpulannya adalah pada saat ini teknologi bukanlah suatu gaya hidup melainkan kebutuhan karena sangat membantu dalam kegiatan kita sehari-hari, dan kita semua pasti setuju rumah adalah suatu kebutuhan bahkan kebutuhan utama. Maka dari itu Cyberhome adalah pilihan yang sangat tepat, karena Cyberhome adalah perumahan minimalis yang menyediakan internet yang supercepat, Cyberhome pun menghadirkan para pakar TIK yang dapat menjadi mentor dalam belajar, bekerja maupun berbisnis, bahkan di Cyberhome kita dapat memiliki server sendiri untuk membuka usaha online di rumah, selain itu perumahan Cyberhome adalah tempat berkumpulnya para pakar/pengusaha TIK, sehingga sangat menguntungkan bagi kita yang menggeluti dunia TIK karena berada di dalam lingkungan yang mendukung.

Laptop Mati Mendadak Setiap 30 Menit

Kamis, 16 Maret 2017


Setelah sekian lama saya tidak menggunakan laptop sendiri, kira-kira hampir sekitar 9 bulan, saya akhirnya menggunakan laptop saya lagi. Dikarenakan laptop inventaris yang dipinjamkan kepada saya sudah saya kembalikan, tidak perlu ditanyakan mengapa saya mengembalikannya, kita semua pasti mengerti :D

Akhirnya saya duduk bersama kekasih (Laptop) saya lagi. Awalnya tidak ada yang aneh, tetapi setelah beberapa saat, mungkin sekitar 30 menit, laptop saya mendadak shutdown tanpa pemberitahuan apapun. Saya sangat yakin baterai belum habis dan termperatur pun tidak terlalu panas, bisa di bilang normal. Tetapi saya tetap berpikir positif bahwa ini overheat, akhirnya saya menyalakannya kembali. Dan setelah 30 menit, terjadi kejadian yang sama, laptop kembali shutdown mendadak, saya pun telah memastikannya menggunakan jam, bahwa benar ini sangat tepat 30 menit akan shutdown mendadak. Jika memang overheat menurut saya waktunya tidak mungkin sama 30 menit.

Dan saat itupun saya langsung searching penyebabnya, sampai akhirnya saya menemukan ini :
Yap! Di sana tertulis penyebabnya adalah motherboard dan seketika membuat tubuh ini lemas. Tidak mungkin saat ini juga saya mampir ke tempat servis untuk mengganti motherboard, dikarenakan keadaan kantong. Dan jika dibiarkan juga akan sangat mengganggu aktifitas bercoding ria saya, karena setiap 30 menit akan shutdown.

Tetapi akhirnya saya menemukan solusi SEMENTARA (maaf saya lupa linknya hehe), kenapa kata sementara saya beri bold, karena ini benar-benar solusi hanya untuk sementara, yaitu dengan Sleep/Suspend laptop setiap 29 menit atau setiap 1 menit sebelum laptop shutdown mendadak! Mungkin merepotkan jika harus menghitung setiap 29 menit dan Sleep atau Suspend laptop manual, dan akhirnya karena saya menggunakan Ubuntu, saya pun menggunakan Cron untuk membuat jadwal setiap 29 menit laptop akan suspend.

Berikut cara menggunakan Cron:

Pertama buka terminal dan ketikan perintah
$ sudo crontab -e
Kemudian paste code ini di dalam crontab tadi
*/29 * * * * systemctl suspend  
Lalu Save!

Selesai! Setiap 29 menit laptop anda akan Suspend dan proses mati mendadak tidak akan terjadi. Cara ini sudah saya test untuk laptop saya sendiri yang menggunakan OS Ubuntu 16.04, untuk laptop windows mungkin ada aplikasi GUInya. Oh iya jika ada yang menemukan cara lebih baik atau bahkan berhasil memperbaiki laptop seperti ini tanpa mengganti motherboard, tolong di share ya :)



Login Session Menggunakan SQLite Android

Sabtu, 12 Desember 2015


Assalamualaikum Wr.Wb~



Apa itu Login Session? Kalian pernah menggunakan Aplikasi Facebook yang ada di android? Atau mungkin Instagram? Ya seperti itulah kira-kira, jadi ketika kita login dan keluar dari aplikasi tanpa logout, kemudian kita ingin masuk aplikasi lagi, kita tidak perlu memasukan username dan password untuk login lagi. Intinya kita tidak perlu login berulang kali saat keluar masuk aplikasi, kecuali saat kita logout.




Nah sekarang kita ingin belajar bagaimana cara membuatnya, pertama kita buat file-file yang kita butuhkan, seperti ini
DatabaseHelper.java 
Class ini berisi perintah untuk menjalankan query seperti Create Table, Insert Data, Delete Data dan sebagainya ke Database SQLite. 
LoginActivity.java 

Class ini berisi perintah untuk login untuk masuk ke MainActivity dan cek session yang ada dalam database. 

MainActivity.java 

Class ini hanya berisi tombol logout, yang nantinya akan menghapus session, yang mengharuskan kita untuk login lagi. 

activity_login.xml 
layout dari LoginActivity 

activity_main.xml
layout dari MainActivity


  1. activity_login.xml
<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/editTextUsername"
        android:layout_gravity="center_horizontal"
        android:hint="Username" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPassword"
        android:ems="10"
        android:id="@+id/editTextPassword"
        android:layout_gravity="center_horizontal"
        android:hint="Password" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Login"
        android:id="@+id/buttonLogin"
        android:layout_gravity="right" />
</LinearLayout>

  1. activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Logout"
        android:id="@+id/buttonLogout"
        android:layout_gravity="right" />
</LinearLayout>

  1. DatabaseHelper.java

  • SimpanData(String Username, String Password)
    Method inilah yang nantinya akan dipanggil di LoginActivity.java untuk menyimpan data username dan password yang login.
  • LihatData()
    Method ini berfungsi untuk melihat data yang ada di database.
  • HapusData()
    Method ini berfungsi untuk mengahpus semua data yang ada di database. Method inilah yang akan dipanggil ketika kita logout.

package azisuazusa.loginsession;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper {
    public static final String DATABASE_NAME = "DB_Login";
    public static final String TABLE_NAME = "TB_Login";
    public static final String COL_1 = "Username";
    public static final String COL_2 = "Password";
    private SQLiteDatabase db;
    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);
        db = this.getWritableDatabase();
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table " + TABLE_NAME + " (Username STRING PRIMARY KEY, Password TEXT)");
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(db);
    }
    public void SimpanData(String Username, String Password) {
        ContentValues values = new ContentValues();
        values.put(COL_1, Username);
        values.put(COL_2, Password);
        db.insert(TABLE_NAME, null, values);
    }
    public Cursor LihatData() {
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor res = db.rawQuery("Select * from " + TABLE_NAME, null);
        return res;
    }
    public void HapusData() {
        SQLiteDatabase db = this.getWritableDatabase();
        db.execSQL("delete from " + TABLE_NAME);
    }
}

  1. LoginActivity.java
    Disini untuk login kita tidak memakan database apapun, kita hanya menggunakan variable string yang berisi Username dan Password.

  • if(res.moveToNext())
    Kode ini berfungsi untuk memeriksa, apakah di dalam database ada data user yang telah login. Jika ada maka LoginActivity.java akan ditutup dan langsung masuk ke MainActivity.
  • Login()
    Method ini berisi perintah untuk login, dan di dalamnya ada MyDB.SimpanData(User, Pass); yang berfungsi untuk menyimpan data Username dan Password yang sedang login.

package azisuazusa.loginsession;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class LoginActivity extends Activity {
    Button btnLogin;
    EditText etUsername, etPassword;
    String Username = "azisu", Password = "azusa";
    DatabaseHelper MyDB;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        MyDB = new DatabaseHelper(this);
        Cursor res = MyDB.LihatData();
        if(res.moveToNext()){
            finish();
            Intent intent = new Intent(this, MainActivity.class);
            startActivity(intent);
        }
        etUsername = (EditText) findViewById(R.id.editTextUsername);
        etPassword = (EditText) findViewById(R.id.editTextPassword);
        btnLogin = (Button) findViewById(R.id.buttonLogin);
        btnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Login();
            }
        });
    }
    private void Login(){
        String User = etUsername.getText().toString();
        String Pass = etPassword.getText().toString();
        if(User.equals("") || Pass.equals("")){
            Toast.makeText(this, "Form Masih Kosong!", Toast.LENGTH_SHORT).show();
        }else{
            if(!User.equals(Username) || !Pass.equals(Password)){
                Toast.makeText(this, "Username atau Password Salah!", Toast.LENGTH_SHORT).show();
            }else {
                Toast.makeText(this, "Berhasil Login!", Toast.LENGTH_SHORT).show();
                MyDB.SimpanData(User, Pass);
                finish();
                Intent intent = new Intent(this, MainActivity.class);
                startActivity(intent);
            }
        }
    }
}

  1. MainActivity.java

  • MyDB.HapusData();
    Kode inilah yang berfungsi untuk menghapus semua data yang ada di database.
package azisuazusa.loginsession;
 
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
    Button btnLogout;
    DatabaseHelper MyDB;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MyDB = new DatabaseHelper(this);
        btnLogout = (Button) findViewById(R.id.buttonLogout);
        btnLogout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MyDB.HapusData();
                finish();
                Intent intent = new Intent(MainActivity.this, LoginActivity.class);
                startActivity(intent);
            }
        });
    }
}

  1. AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="azisuazusa.loginsession">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".LoginActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".MainActivity"></activity>
    </application>
</manifest> 
 
Sekarang silahkan coba jalankan! Sekian, semoga bermanfaat. Wassalamualaikum Wr. Wb~