MODUL PEMROGRAMAN 3 - My Journal blog...Dalam contoh ini digunakanlah loop, sehingga kode kita...

48
MODUL PEMROGRAMAN 3 UNIVERSITAS INDRAPRASTA PGRI JAKARTA 2012

Transcript of MODUL PEMROGRAMAN 3 - My Journal blog...Dalam contoh ini digunakanlah loop, sehingga kode kita...

  • MODUL

    PEMROGRAMAN 3

    UNIVERSITAS INDRAPRASTA PGRI

    JAKARTA

    2012

  • BAB I

    Pengenalan Array

    Di semester sebelumnya, kita telah mendiskusikan bagaimana cara pendeklarasian

    berbagai macam variabel dengan menggunakan tipe data primitif. Dalam pendeklarasian

    variabel, kita sering menggunakan sebuah tipe data beserta nama variabel atau identifier yang

    unik, dimana untuk menggunakan variabel tersebut, kita akan memanggil dengan nama

    identifier-nya.

    Sebagai contoh, kita memiliki tiga variabel dengan tipe data int yang memiliki

    identifier yang berbeda untuk tiap variabel.

    int number1;

    int number2;

    int number3;

    number1 = 1;

    number2 = 2;

    number3 = 3;

    Seperti yang dapat Anda perhatikan pada contoh diatas, hanya untuk menginisialisasi

    dan menggunakan variabel terutama pada saat variabel-variabel tersebut memiliki tujuan yang

    sama, dirasa sangat membingungkan. Di Java maupun di bahasa pemrograman yang lain,

    mereka memiliki kemampuan untuk menggunakan satu variabel yang dapat menyimpan

    sebuah data list dan kemudian memanipulasinya dengan lebih efektif. Tipe variabel inilah

    yang disebut sebagai array.

    Array adalah struktur data yang digunakan untuk proses pengumpulan data yang

    semua tipe yang sama.

    Gambar 1: Contoh dari Integer Array

  • Sebuah array akan menyimpan beberapa item data yang memiliki tipe data sama

    didalam sebuah blok memori yang berdekatan yang kemudian dibagai menjadi beberapa slot.

    Bayangkanlah array adalah sebuah variabel – sebuah lokasi memori tertentu yang memiliki

    satu nama sebagai identifier, akan tetapi ia dapat menyimpan lebih dari sebuah nilai.

    I.1 Pendeklarasian Array

    I.1.1 Array Satu Dimensi

    Array harus dideklarasikan seperti layaknya sebuah variabel. Apabila Anda

    mendeklarasikan array, Anda harus membuat sebuah list dari tipe data, yang diikuti

    oleh tanda kurung buka dan kurung tutup, yang diikuti oleh nama identifier. Sebagai

    contoh,

    int [] nilai;

    atau Anda dapat menempatkan kurung buka dan kurung tutupnya setelah

    identifier. Sebagai contoh,

    int nilai [];

    Setelah pendeklarasian, kita harus membuat array dan menentukan berapa

    panjangnya dengan sebuah konstruktor. Proses ini di Java disebut sebagai

    instantiation ( Kata dalam Java yang berarti membuat ). Untuk meng-instantiate sebuah

    obyek, kita membutuhkan sebuah konstruktor. Kita akan membicarakan lagi mengenai

    instantiate obyek dan pembuatan konstruktor pada bagian selanjutnya. Perlu dicatat,

    bahwa ukuran dari array tidak dapat diubah setelah Anda menginisialisasinya. Sebagai

    contoh,

    //deklarasi

    int umur[ ];

    //instantiate obyek

    umur = new int[100];

    atau bisa juga ditulis dengan,

    //deklarasi dan instantiate obyek

    int umur [ ] = new int[100];

  • Pada contoh diatas, deklarasi akan memberitahukan kepada compiler Java, bahwa

    identifier umur akan digunakan sebagai nama array yang berisi data-data integer, dan

    kemudian untuk membuat atau meng-instantiate sebuah array baru yang terdiri dari

    100 elemen. Selain menggunakan sebuah keyword baru untuk meng-instantiate array,

    Anda juga dapat secara otomatis mendeklarasikan array, membangunnya, kemudian

    memberikan sebuah value/ nilai.

    Sebagai contoh,

    // Membuat sebuah array yang berisi variabel-variabel //boolean pada sebuah

    identifier. Array ini terdiri dari 4 //elemen yang diinisilisasikan sebagai value

    //{true,false,true,false}

    boolean hasil [ ] ={ true, false, true, false };

    // Membuat sebuah array yang terdiri dari penginisialisasian //4 variabel double bagi

    value {100,90,80,75}

    double [ ] nilai = {100, 90, 80, 75};

    // Membuat sebuah array String dengan identifier days. Array //ini terdiri dari 7

    elemen.

    String hari [ ] = { “Senin”, “Selasa”, “Rabu”, “Kamis”, “Jumat”, “Sabtu”, “Minggu”};

    Berikut ini adalah contoh, bagaimana untuk mencetak seluruh elemen didalam

    array. Dalam contoh ini digunakanlah loop, sehingga kode kita menjadi lebih pendek.

    Praktikum I

    public class ContohArray {

    public static void main( String [ ] args ) {

    //deklarasi array

    int [ ] umur = new int[100];

    //melooping array hingga i

  • }

    }

    }

    I.1.2 Panjang Array

    Untuk mengetahui berapa banyak element didalam sebuah array, Anda dapat

    menggunakan length (panjang) field dalam array. Panjang field dalam array akan

    mengembalikan ukuran dari array itu sendiri. Sebagai contoh,

    arrayName.length

    Pada contoh sebelumnya, kita dapat menuliskannya kembali seperti berikut ini,

    Praktikum II

    public class ContohSample {

    public static void main( String [] args ) {

    //deklarasi array

    int[] umur = new int[100];

    //melooping array sesuai dengan panjang (length) deklarasi array yang di

    atas

    for( int i=0; i < umur.length ; i++ ){

    System.out.print( umur[i] );

    }

    }

    }

    I.1.3 Array Multidimensi

    Array multidimensi diimplementasikan sebagai array didalam array. Array

    multidimensi dideklarasikan dengan menambahkan jumlah tanda kurung setelah nama

    array. Sebagai contoh,

    // Elemen 512 (baris) x 128(kolom) dari integer array

    int [][] twoD = new int[512][128];

    // String array 4 baris x 2 kolom

  • String [][] dogs = { { "terry", "brown" },

    { "Kristin", "white" },

    { "toby", "gray"},

    { "fido", "black"} };

    Untuk mengakses sebuah elemen didalam array multidimensi, sama saja dengan

    mengakses array satu dimensi. Misalnya saja, untuk mengakses element pertama dari

    baris pertama didalam array dogs, kita akan menulis,

    System.out.print( dogs[0][0] );

    Kode diatas akan mencetak String “terry” di layar.

    Praktikum I

    public class array_for2{

    public static void main(String[]args){

    int coba1 [][] = {{23,54,-89,4,8,-89},{46,-5,76,45,7,32},{78,-56,87,-

    42,6,8}};;

    System.out.println(coba1[2][5]+coba1[1][3]);

    System.out.println(coba1[0][4]+coba1[1][5]);

    }

    }

    Untuk hasil program diatas adalah :

    53

    40

  • Latihan:

    Hari dalam seminggu

    1. Buatlah sebuah String array yang akan menginisialisasi 7 hari dalam seminggu. Sebagai

    contoh, String bulan [] = {“januari”, “februari”….}; gunakan while-loop, kemudian print

    semua nilai dari array (Gunakan juga untuk do-while dan for-loop)Using a while-loop.

    2. Buku Alamat Berikut ini adalah array multidimensi yang menyatakan isi dari sebuah buku

    alamat: String entry = {{"nina", "986-4345", "bojong"}, {"gugun", "457-4356", "curug"},

    {"edi", "657-8768", "bintaro"}};

    Cetak buku alamat tersebut dalam format berikut ini:

    Name : nina

    Tel. # : 986-4345

    Address : bojong

    Name : gugun

    Tel. # : 457-4356

    Address : curug

    Name : edi

    Tel. # : 657-8768

    Address : bintaro

  • BAB II

    Pengenalan Input/Output (I/O)

    Program komputer bisa berguna jika ia bisa berinteraksi dengan dunia lain. Interaksi di

    sini maksudnya input/output atau I/O. Pada bab ini, kita akan melihat input output pada file

    dan koneksi jaringan (network). Pada Java, input/output pada file dan jaringan dilakukan

    berdasarkan aliran (stream), di mana semua objek dapat melakukan perintah I/O yang sama.

    Standar output (System.out) dan standar input (System.in) adalah contoh aliran.

    BufferedReader

    Menggunakan BufferedReader untuk mendapatkan input

    Pada bagian ini, kita akan menggunakan class BufferedReader yang berada di package

    java.io untuk mendapatkan input dari keyboard. Berikut ini adalah langkah-langkah yang

    diperlukan untuk mendapatkan input dari keyboard:

    1. Tambahkan di bagian paling atas code Anda:

    import java.io.*;

    2. Tambahkan statement berikut:

    BufferedReader dataIn = new BufferedReader(new InputStreamReader(

    System.in) );

    3. Deklarasikan variabel String temporary untuk mendapatkan input, dan gunakan

    fungsi readLine() untuk mendapatkan input dari keyboard. Anda harus

    mengetikkannya di dalam blok try-catch:

    try{

    String temp = dataIn.readLine();

    }

    catch( IOException e ){

    System.out.println(“Error in getting input”);

    }

    Berikut ini adalah source code lengkapnya:

    import java.io.BufferedReader;

    import java.io.InputStreamReader;

  • import java.io.IOException;

    public class GetInputFromKeyboard

    {

    public static void main( String[] args ){

    BufferedReader dataIn = new BufferedReader(new

    InputStreamReader( System.in) );

    String name = "";

    System.out.print("Please Enter Your Name:");

    try{

    name = dataIn.readLine();

    }catch( IOException e ){

    System.out.println("Error!");

    }

    System.out.println("Hello " + name +"!");

    }

    }

    Berikutnya akan penjelasan setiap baris dari code tersebut:

    Statement,

    import java.io.BufferedReader;

    import java.io.InputStreamReader;

    import java.io.IOException;

    menjelaskan bahwa kita akan menggunakan class BufferedReader,

    InputStreamReader dan IOException yang berada di java.io package. Java Application

    Programming Interface (API) berisi ratusan class yang sudah didefinisikan sebelumnya yang

    dapat digunakan untuk program Anda. Class-class tersebut dikumpulkan di dalam packages.

    Packages berisi class yang mempunyai fungsi yang saling berhubungan. Seperti pada contoh

    di atas, java.io package mengandung class-class yang memungkinkan program untuk

    melakukan input dan output data. Pernyataan di atas juga dapat ditulis sebagai berikut,

    import java.io.*;

    NB : Perintah tersebut berarti mengimport semua kelas dalam paket java.io.* (tanda *

    berarti semua)

  • yang akan mengeluarkan semua class yang berada dalam package, dan selanjutnya kita

    bisa menggunakan class-class tersebut dalam program kita.

    Dua statement selanjutnya,

    public class GetInputFromKeyboard

    {

    public static void main( String[] args ){

    kita sudah mempelajari pada pelajaran sebelumnya. Pernyataan ini mendeklarasikan

    class bernama GetInputFromKeyboard dan kita mendeklarasikan method main.

    Dalam statement,

    BufferedReader dataIn = new BufferedReader(new

    InputStreamReader( System.in) );

    kita mendeklarasikan sebuah variabel bernama dataIn dengan tipe class

    BufferedReader. Jangan mengkhawatirkan tentang maksud dari syntax saat ini. Kita akan

    menjelaskannya pada akhir pembahasan. Sekarang, kita akan mendeklarasikan variabel String

    dengan identifier name,

    String name = " ";

    Pernyataan di atas merupakan tempat untuk menyimpan input dari user. Nama variabel

    diinisialisasi sebagai String kosong "". Sebaiknya kita selalu menginisialisasi sebuah variabel

    setelah kita mendeklarasikannya. Baris berikutnya adalah memberikan output sebuah String

    pada layar yang menanyakan nama user.

    System.out.print("Please Enter Your Name:");

    Sekarang, blok di bawah ini merupakan try-catch block,

    try{

    name = dataIn.readLine();

    }catch( IOException e ){

    System.out.println("Error!");

    }

    Pada baris ini menjelaskan bahwa kemungkinan terjadi error pada pernyataan,

    name = dataIn.readLine();

  • akan ditangkap. Kita akan membahas tentang penanganan exception pada bab selanjutnya dari

    pembahasan ini, tetapi untuk sekarang, Anda cukup mencatat bahwa Anda perlu

    menambahkan kode ini untuk menggunakan method readLine() dari BufferedReader untuk

    mendapatkan input dari user. Selanjutnya kembali ke pernyataan,

    name = dataIn.readLine();

    method diatas memanggil dataIn.readLine(), mendapatkan input dari user dan memberikan

    sebuah nilai String. Nilai ini akan disimpan ke dalam variabel name, yang akan kita gunakan

    pada statement akhir untuk menyambut user,

    System.out.println("Hello " + name + "!");

    PRAKTIKUM 1

    import java.io.*;

    class TanpaArray

    { public static void main(String[] args)

    { int max=Integer.MIN_VALUE;

    int min=Integer.MAX_VALUE;

    int n=1, x, jml=0;

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    System.out.println("Masukkan data ke-"+n+" : ");

    try

    { while((x=Integer.parseInt(br.readLine()))!=0)

    { if(x>max) max=x;

    if(x

  • System.out.println("Rata-rata : "+rata2);

    System.out.println("Angka terkecil : "+min);

    System.out.println("Angka terbesar : "+max);

    }

    }

    Praktikum II

    import java.io.*;

    public class ProgramKasir

    {

    public static void main(String args[])throws IOException

    {

    //membuat turunan class untuk input dari user

    BufferedReader dataIn=new BufferedReader(new InputStreamReader(System.in));

    System.out.print("Berapa Harga Barang :");

    int a = Integer.parseInt(dataIn.readLine());

    System.out.print("Berapa Jumlah Barang yang diambil:");

    int b = Integer.parseInt(dataIn.readLine());

    int total =(a*b);

    System.out.println("Harga barang = Rp "+a);

    System.out.println("Jmlah barang = "+b);

    System.out.println("Total harga sebelum diskon =Rp"+total);

    if(total>10000 & total100000 & total

  • System.out.println(total-(total * 0.05));

    }

    else if(total>500000 & total

  • BAB III

    Jenis InputStream dan OutputStream

    Package Java I/O

    Java IO dibutuhkan ketika kita membaca dan menulis, baik ditampilkan pada layar

    maupun disimpan pada file.

    Dalam pemrograman, java IO dibutuhkan ketika kita hendak mengirim data maupun

    membaca data dari server.

    Input/Output dalam java dipaketkan dalam java.io

    Selain kelas-kelas, paket ni juga mengandung interface yang menangani aliran (stream)

    data input dan output.

    Ada beberapa kelas abstrak dasar

    InputStream

    OutputStream

    InputStream dan OutputStream digunakan untuk data biner

    Interaksi suatu program dengan dunia lain sering disebut input/output atau I/O. Sejak

    dulu, salah satu tantangan terbesar untuk mendesain bahasa pemrograman baru adalah

    mempersiapkan fasilitas untuk melakukan input dan output. Salah satu kemajuan terbesar

    dalam sejarah pemrograman adalah adanya konsep (atau abstraksi) untuk memodelkan

    perangkat I/O. Dalam Java, abstraksi ini disebut dengan aliran (stream). Bagian ini akan

    memperkenalkan tentang aliran, akan tetapi tidak menjelaskan dengan komplit. Untuk lebih

    lengkapnya, silakan lihat dokumen resmi Java.

    Stream adalah suatu abstraksi untuk data input dan output.

    Tidak peduli dari mana input berasal atau kemana output akan pergi.

  • Ketika berhubungan dengan input/output, kita harus ingat bahwa ada dua kategori data

    secara umum : data yang dibuat oleh mesin, dan data yang bisa dibaca manusia. Data yang

    dibuat mesin ditulis dengan model yang sama dengan bagaimana data tersebut disimpan di

    dalam komputer, yaitu rangkaian nol dan satu. Data yang bisa dibaca manusia adalah data

    dalam bentuk rangkaian huruf. Ketika kita membaca suatu bilangan 3.13159, kita

    membacanya sebagai rangkaian huruf yang kita terjemahkan sebagai angka. Angka ini akan

    ditulis dalam komputer sebagai rangkaian bit yang kita tidak mengerti.

    InputStream

    Beberapa kelas turunan dari InputStream dapat dirangkum dalam tabel di bawah ini :

    Kelas Kegunaan Argumen yang dibutuhkan

    untuk membuat objek

    ByteArrayInputStream Menggunakan buffer pada

    memori sebagai aliran input

    Buffer yang akan digunakan

    sebagai aliran input

    StringBufferInputStream Mengubah string menjadi

    InputStream

    Suatu String (di dalamnya

    sebenarnya menggunakan

    StringBuffer)

    FileInputStream Untuk membaca informasi dari

    dalam file

    String yang berupa nama suatu

    file, atau objek bertipe File atau

    FileDescriptor

    PipedInputStream Menghasilkan data yang ditulis Objek PipedOutputStream

  • oleh PipedOutputStream.

    Mengimplementasi konsep

    "piping". Bisa digunakan untuk

    multi-threading

    SequenceInputStream

    Menggabungkan dua atau lebih

    InputStream menjadi satu

    InputStream

    Dua atau lebih objek bertipe

    InputStream atau kontainer

    bertipe Enumeration yang berisi

    InputStream yang akan

    digabungkan

    FilterInputStream

    Kelas abstrak yang merupakan

    interface dari beberapa kelas

    bantu untuk menggunakan

    InputStream lain

    FilterInputStream adalah lapisan di atas InputStream yang berguna untuk memberi

    landasan pada kelas-kelas dekorator di atas. Kenapa dekorator? Karena kelas-kelas ini hanya

    memberikan fungsionalitas tambahan, akan tetapi tidak mengubah bagaimana I/O itu sendiri

    bekerja. Seperti disebutkan sebelumnya, bahwa kelas dasar InputStream dan OutputStream

    hanya memiliki metode-metode paling sederhana. Kelas-kelas ini memperbanyak metode

    baca/tulis untuk kemudahan pemrograman.

    Kelas FilterInputStream sendiri terdiri dari beberapa jenis, yang bisa dirangkum

    dalam tabel berikut ini :

    Kelas Kegunaan

    Argumen yang

    dibutuhkan untuk

    membuat objek

    DataInputStream

    Digunakan bersama-sama dengan

    DataOutputStream sehingga kita bisa menulis

    tipe data primitif, kemudian membacanya

    kembali tanpa harus diformat sendiri

    InputStream

    BufferedInputStream

    Digunakan untuk menghindari pembacaan

    langsung dari media secara fisik setiap kali

    perintah read() diberikan. Atau dengan kata

    InputStream dengan

    kemungkinan

    menentukan besar

  • lain "gunakan buffer" untuk baca tulis buffer sendiri

    LineNumberInputStream

    Mencatat nomor baris dalam InputStream.

    Kita bisa menggunakan perintah

    getLineNumber() dan setLineNumber(int)

    InputStream

    PushBackInputStream

    Memiliki satu byte buffer sehingga kita bisa

    meletakkan kembali karakter yang sudah

    diambil (dibaca)

    InputStream

    OutputStream

    Beberapa kelas turunan dari OutputStream dapat dirangkum dalam tabel di bawah ini :

    Kelas Kegunaan

    Argumen yang

    dibutuhkan untuk

    membuat objek

    ByteArrayOutputStream

    Membuat buffer dalam memori. Semua

    data yang kita kirim akan disimpan di

    memori ini.

    Opsional untuk memberikan

    besar buffer yang akan

    disiapkan

    FileOutputStream Untuk menulis informasi ke dalam file

    String yang berupa nama

    suatu file, atau objek bertipe

    File atau FileDescriptor

    PipedOutputStream

    Informasi yang kita kirim di aliran output

    ini akan berakhir pada objek bertipe

    PipedInputStream. Mengimplementasi

    konsep "piping". Bisa digunakan untuk

    multi-threading

    Objek PipedInputStream

    FilterOutputStream

    Kelas abstrak yang merupakan interface

    dari beberapa kelas bantu untuk

    menggunakan OutputStream lain.

  • Kelas FilterOutputStream sendiri terdiri dari beberapa jenis, yang bisa dirangkum dalam

    tabel berikut ini :

    Kelas Kegunaan

    Argumen yang

    dibutuhkan untuk

    membuat objek

    DataOutputStream

    Digunakan bersama-sama dengan

    DataInputStream sehingga kita bisa

    menulis tipe data primitif, kemudian

    membacanya kembali tanpa harus diformat

    sendiri

    OutputStream

    PrintStream

    Untuk mengeluarkan output yang sudah

    diformat. DataOutputStream hanya

    menangani bagaimana data disimpan

    sehingga bisa diambil kembali.

    PrintStream lebih berkonsentrasi pada

    "tampilan", sehingga data yang ditulis bisa

    dibaca dengan baik.

    OutputStream dengan

    tambahan opsi boolean

    untuk memerintahkan

    buffer akan dikosongkan

    (flush) setiap kali baris

    baru ditulis.

    BufferedOutputStream

    Digunakan untuk menghindari penulisan

    langsung dari media secara fisik setiap kali

    perintah write() diberikan. Atau dengan

    kata lain "gunakan buffer" untuk baca tulis.

    Kita bisa menggunakan perintah flush()

    untuk mengosongkan buffer dan

    mengirimkan hasilnya ke media fisik.

    OutputStream dengan

    kemungkinan menentukan

    besar buffer sendiri

    Class Stream

    Byte Stream : Kelas dan interface ini digunakan untuk menangani data biner.

    Character Stream : kelompok kelas ini digunakan untuk menangani proses baca tulis

    karakter, termasuk Unicode. Kelas ini merupakan pengembangan dari kelas byte steam

    sehingga lebih efisien.

  • Stream Standard

    Kelas java.lang.System berkaitan standar input, output dan error.

    System.in merupakan objek dari InputStream

    System.out dan System.err merupakan objek dari PrintStream.

    Dalam java cara membaca inputan dari keyboard adalah menggunaka System.in. Agar

    mempermudah proses makan objek System.in dibungkus dengan objek BuffererReader.

    BufferedReader br = new BufferedReader (newInputStreamReader(System.in));

    Kita telah memperoleh obyek untuk menangani aliran karakter (character stream) yang

    memiliki method-method seperti misalnya read() untuk membaca inputan karakter. Jika

    mencapai end of stream maka akan menghasilkan nilai -1.

    Contoh:

    PRAKTIKUM 2

    import java.io.*;

    public class ObjectStreamExample{

    public static void main(String args[]){

    try {

    ObjectInputStream in = new ObjectInputStream(new

    FileInputStream(“myFile3.dat”));

    String s = (String)in.readObject();

    in.close();

    System.out.println(s);

    }

    catch(IOException e ) {

    System.out.println (“ Error reading the specified file. ” ) ;

    }

    }

    }

    Baca string dari text

    import java.io.*;

    class BacaStringDariFile {

    public static void main(String args[]) {

    try {

    FileInputStream fstream = new FileInputStream("test.txt");//nama objeknya

    fsstream

    DataInputStream dataInput = new DataInputStream(fstream);

    while (dataInput.available() != 0)

    {

    String data=dataInput.readLine();

    System.out.println (data);

  • }

    dataInput.close();

    }

    catch (Exception e)

    {

    System.err.println("File input error");

    }}}

    Tulis Ke File

    import java.io.*;

    class TulisKeFile

    {

    public static void main(String args[])

    {

    FileOutputStream out; // declare a file output object

    PrintStream p; // declare a print stream object

    try

    {

    out = new FileOutputStream("d:/myfile.doc");

    // Connect print stream to the output stream

    p = new PrintStream( out );

    p.println ("ini string yang ditulis ke file");

    p.println("bla,,,bla,,,");

    p.close();

    }

    catch (Exception e)

    {

    System.err.println ("Error writing to file");

    }

    System.out.println("Tulis ke file OK");

    }

    Harga Buncis

    import java.io.*;

    class HargaBuncis

    {

    public static void main(String args[])

    {

    String x;

    int harga=0,jumlah=0,n=0; // cobain kalau int harga,jumlah,n;

    try

    {

    FileInputStream fstream = new FileInputStream("d:/hargabuncis.txt");

    DataInputStream dataInput = new DataInputStream(fstream);

    while (dataInput.available() !=0) {

    x=dataInput.readLine();

    harga=Integer.parseInt(x);

    n+=1;//n=n+1;

    jumlah=jumlah+harga;

    System.out.println ("Harga Buncis hari ke "+n+" "+harga);

  • }

    dataInput.close();

    }

    catch (Exception e)

    {

    System.err.println("File input error");

    }

    double rata2= jumlah/n;

    double rata3= (double) jumlah/n;

    // cobain kalau pake double rata2=jumlah/n; hasilnya spt apa?

    System.out.println ("Harga Buncis rata-rata "+rata2);

    System.out.println ("Harga Buncis rata-rata "+rata3);

    System.out.printf("harga buncis rata-rata adalah %.2f",rata3);

    }

    }

    TANPA ARRAY

    import java.io.*;

    class TanpaArray

    { public static void main(String[] args)

    { int max=Integer.MIN_VALUE;

    int min=Integer.MAX_VALUE;

    int n=1, x, jml=0;

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    System.out.println("Masukkan data ke-"+n+" : ");

    try

    { while((x=Integer.parseInt(br.readLine()))!=0)

    { if(x>max) max=x;

    if(x

  • { String str;

    int tgs,uts,uas;

    double nilai;

    String nilaiHuruf;

    try

    { FileReader fr = new FileReader("d:/coba.txt");

    //FileReader fr = new FileReader("testdata.txt");

    BufferedReader br = new BufferedReader(fr);

    while((str=br.readLine()) != null)

    { tgs = Integer.parseInt(str.substring(1,3));

    uts = Integer.parseInt(str.substring(4,6));

    uas = Integer.parseInt(str.substring(7,9));

    nilai=(20*tgs+30*uts+50*uas)/100.0;

    // tambahin di sini untuk konversi jadi nilai huruf

    if (nilai > 80){

    nilaiHuruf = "A";

    } else if (nilai > 70){

    nilaiHuruf = "B";

    } else if (nilai > 60){

    nilaiHuruf = "C";

    } else {

    nilaiHuruf = "E";

    }

    System.out.printf(" tugas %d uts %d uas %d nilai %.2f nilaiHuruf

    %s\n",tgs,uts,uas,nilai,nilaiHuruf);// %d mengambil type bil.bulat

    }

    br.close();

    } catch(IOException e)

    { System.err.println("File read error");

    }

    }

    }

  • Java Scanner

    Sebuah objek scanner dapat mengurai input yang dimasukkan melalui keyboard atau

    dari sebuah file. Scanner memisahkan inputnya menjadi menjadi token terpisah (yang

    biasanya dipisahkan dengan spasi), dan kemudian mengembalikannya pada satu waktu.

    Scanner menyediakan metode untuk mengubah token menjadi nilai dari tipe yang berbeda.

    Kita dapat menggunakan utility scanner dalam dua cara, yaitu :

    1. Untuk membaca dari keyboard, menggunakan perintah di bawah ini

    Scanner input = new Scanner(System.in);

    2. Untuk membaca dari sebuah file, menggunakan perintah di bawah ini

    Scanner input = new Scanner(new FileStream(“filename.txt”));

    Contoh program untuk input bilangan bulat (integer)

    import java.util.Scanner;

    class input2

    {

    public static void main(String[] args)

    {

    Scanner sc = new Scanner(System.in);

    int luas;

    System.out.print(“Masukkan Panjang : “); Integer panjang = sc.nextInt();

    System.out.print(“Masukkan Lebar : “); Integer lebar = sc.nextInt();

    luas = panjang * lebar;

    System.out.println(“Luas Persegipanjang : “+ luas);

    }

    }

    Contoh program untuk input string dan bilangan bulat

    import java.util.Scanner;

    class input3

    {

    public static void main(String[] args)

    {

    Scanner sc = new Scanner(System.in);

  • double Nilai_Akhir;

    System.out.print(“Masukkan NIM Anda : “); String NIM = sc.next();

    System.out.print(“Masukkan Nama Anda : “); String Nama = sc.next();

    System.out.print(“Masukkan UTS : “); Integer UTS = sc.nextInt();

    System.out.print(“Masukkan UAS : “); Integer UAS = sc.nextInt();

    Nilai_Akhir = 0.4*UTS + 0.6*UAS;

    System.out.println(“”);

    System.out.println(“”);

    System.out.println(“NIM Anda : “+ NIM);

    System.out.println(“Nama Anda : “+ Nama);

    System.out.println(“UTS : “+ UTS);

    System.out.println(“UAS : “+ UAS);

    System.out.println(“Nilai Akhir : “+ Nilai_Akhir);

    }

    }

    Contoh program untuk input bilangan pecahan

    import java.util.Scanner;

    class input4

    {

    public static void main(String[] args)

    {

    Scanner sc = new Scanner(System.in);

    double luas;

    System.out.print(“Masukkan Panjang : “); Double panjang = sc.nextDouble();

    System.out.print(“Masukkan Lebar : “); Double lebar = sc.nextDouble();

    luas = panjang * lebar;

    System.out.println(“Luas Persegipanjang : “+ luas);

    }

    }

    PRAKTIKUM 3

    import java.util.Scanner;

    public class lingkaran{//kelas induknya

    public static void main(String[] Xx){//method main

    Scanner c = new Scanner(System.in);

    double r; double Luas;

    double phi=3.14;

  • System.out.println("masukkan jari= ");

    r = c.nextDouble();

    Luas = phi*r*r;

    System.out.println("Luas lingkaran adalah " +Luas);

    }

    }

    import java.util.Scanner;//library

    public class luasSegitiga{

    public static void main(String[]ok){

    double alas,tinggi,Luas;

    Scanner parto = new Scanner(System.in);

    System.out.print("masukkan nilai alas: ");

    alas = parto.nextFloat();

    System.out.print("masukkan nilai tinggi: ");

    tinggi = parto.nextFloat();

    Luas = (alas*tinggi)/2;

    System.out.println("hasilnya = "+Luas);

    System.out.printf("hasilnya = %.2f",Luas);

    // %d, %f, %s, %c

    }

    }

    import java.util.Scanner;

    public class Kondisi{

    public static void main(String[]test){

    int nilai;

    Scanner ujang = new Scanner(System.in);

    System.out.println("masukkan nilai: ");

    nilai = ujang.nextInt();

    if(nilai>80){

    System.out.println("LULUS");

    }

    else{

    System.out.println("TIDAK LULUS");

    }

    }

    }

  • import java.util.Scanner;

    public class nilai{

    public static void main(String[]args){

    double tugas,uts,uas,nilaiTotal;

    String nilaiHuruf;

    Scanner s= new Scanner(System.in);

    System.out.println("masukkan nilai Tugas: ");

    tugas = s.nextFloat();

    tugas *= 0.2;// tugas = tugas * 0.2

    System.out.println("pointnya adalah "+tugas);

    System.out.println("masukkan nilai uts: ");

    uts = s.nextFloat();

    uts *= 0.3;

    System.out.println("pointnya adalah "+uts);

    System.out.println("masukkan nilai uas: ");

    uas = s.nextFloat();

    uas *= 0.5;

    System.out.println("pointnya adalah "+uas);

    nilaiTotal = tugas + uts + uas;

    System.out.printf("jumlah nilai point anda %.2f\n",nilaiTotal);

    if(nilaiTotal > 80){

    nilaiHuruf = "A";

    }

    else if (nilaiTotal > 70){

    nilaiHuruf = "B";

    }

    else if(nilaiTotal > 60){

    nilaiHuruf = "C";

    }

    else{

    nilaiHuruf = "E";

    }System.out.println("nilai anda adalah "+nilaiHuruf);

    }

    }

    import java.util.Scanner;

    public class acak {

    public static void main (String[]args){

    String nama,npm,huruf;

    double tugas,uts,uas,total;

    Scanner S = new Scanner (System.in);

    System.out.println("Masukan Nama Anda : ");

  • nama = S.nextLine();

    System.out.println("Masukan NPM Anda : ");

    npm = S.nextLine();

    System.out.println("Masukan Nilai Tugas : ");

    tugas = S.nextDouble();

    System.out.println("Masukan Nilai UTS : ");

    uts = S.nextDouble();

    System.out.println("Masukan Nilia UAS : ");

    uas = S.nextDouble();

    total =(tugas*0.2)+(uts*0.3)+(uas*0.5);

    if (total >=80){

    huruf="A";

    }else if(total >=70){

    huruf ="B";

    }else if(total >=60){

    huruf ="C";

    }else if(total >=50){

    huruf ="D";

    }else{

    huruf ="E";

    }

    System.out.println("Nama Anda : "+nama);

    System.out.println("NPM Anda : "+npm);

    System.out.println ("Nilai Anda Adalah :"+total);

    System.out.println ("Nilai Huruf : "+huruf);

    }

    import java.util.*;

    class Discont{

    public static void main(String[]args){

    double diskon,total,bayar,jumlah;

    String potongan,hadiah;

    Scanner misro = new Scanner(System.in);

    System.out.print ("Masukan TOTAL BAYAR :");

    total = misro.nextDouble();

    if (total >=1000000){

    potongan ="20%";

    diskon =total*0.2;

    hadiah ="Payung";

    bayar =(total-(total*0.2));

    }else if (total >=500000){

    potongan ="15%";

    diskon =total*0.15;

    hadiah ="Mangkok";

  • bayar =(total-(total*0.15));

    }else if(total >=200000){

    potongan ="10";

    diskon =total*0.1;

    hadiah ="Gelas";

    bayar =(total-(total*0.1));

    }else {

    potongan ="NGK ADA";

    diskon =total*0;

    hadiah ="Maaf anda belum beruntung";

    bayar =(total-(total*0));

    }

    System.out.println ("Total belanja Sebelum Diskon :"+total);

    System.out.println ("Diskon yang anda peroleh :"+potongan);

    System.out.println ("Potongan Belanja :"+diskon);

    System.out.println ("Total belanja harus dibayar :"+bayar);

    System.out.println ("Hadiah :"+hadiah);

    }

    }

    import java.util.Scanner;

    public class InputOutput{

    public static void main (String [] args){

    double hargaSewaDVD = 5000, jumlahDVD, denda = 0.1, hargaTotal, lamaSewa, dendaNya;

    Scanner s = new Scanner(System.in);

    System.out.println("masukkan jumlah DVD: ");

    jumlahDVD = s.nextFloat();

    if (jumlahDVD

  • }

    }

    else

    {

    System.out.println("DVD anda terlalu banyak...!!");

    }

    }

    }

  • BAB IV

    DATA BASE MANAGEMENT SYSTEM

    Pengertian Database

    Beberapa definisi tentang Database :

    1. Menurut Gordon C. Everest :

    Database adalah koleksi atau kumpulan data yang mekanis, terbagi/shared, terdefinisi

    secara formal dan dikontrol terpusat pada organisasi.

    2. Menurut C.J. Date :

    Database adalah koleksi “data operasional” yang tersimpan dan dipakai oleh sistem

    aplikasi dari suatu organisasi.

    - Data input adalah data yang masuk dari luar sistem

    - Data output adalah data yang dihasilkan sistem

    - Data operasional adalah data yang tersimpan pada sistem

    3. Menurut Toni Fabbri :

    Database adalah sebuah sistem file-file yang terintegrasi yang mempunyai minimal

    primary key untuk pengulangan data.

    4. Menurut S. Attre :

    Database adalah koleksi data-data yang saling berhubungan mengenai suatu organisasi /

    enterprise dengan macam-macam pemakaiannya.

    STRUCTURE QUERY LANGUAGE (SQL)

    Structure Query Language (SQL) merupakan komponen bahasa relational database

    system. SQL merupakan bahasa baku (ANSI/SQL), non procedural, dan berorientasi

    himpunan (set-oriented language). SQL dapat digunakan baik secara interaktif atau

    ditempelkan (embedded) pada sebuah program aplikasi.

    Banyak perintah dan fungsi SQL yang dapat digunakan untuk mendefenisikan maupun

    memanipulasi database. Suatu rangkaian aktivitas yang berhubungan dengan pemulihan dan

    pengoptimalan perintah query di dalam database pada SQL dapat dituliskan fasilitas yang

  • memiliki antarmuka grafis yaitu Query Analyzer. Beberapa aktivitas yang dimaksud, antara

    lain :

    Melakukan query pada databese SQL dengan menggunakan perintah-perintah SQL

    untuk melihat teks atau grid.

    Melihat representasi grafik dari langkah-langkah untuk mengakses query

    Melakukan analisa kinerja indeks

    Menjalankan skrip Transact SQL dari prosedur tersimpan.

    Secara umum perintah-perintah pada SQL dibagi menjadi dua kelompok yaitu :

    1. DDL (Data Definition Language)

    DDL merupakan bagian dari SQL yang digunakan untuk mendefenisikan data dan proyek

    database. Perintah digunakan untuk mendefenisikan suatu proyek, yaitu membuat,

    mengubah, menghapus dan memberikan izin.

    Beberapa perintah pada SQL yang temasuk DDL, seperti :

    Create Table untuk Membuat Tabel

    Create Index untuk Membuat Index

    Create View untuknMembuat View

    Alter Table untuk Mengubah atau menyisipkan ke dalam table

    Drop Table untuk Menghapus Tabel

    Drop Index untuk Menghapus Index

    Drop View untuk Menghapus View

    Grant untuk Memberi izin akses kepada user

    2. DML (Data Manipulation Language)

    DML merupakan bagian dari SQL yang digunakan untuk memanipulasi data. Perintah-

    perintah ini bertugas untuk melakukan query dan perubahan yg dilakukan dalam suatu

    tabel

    Beberapa perintah SQL yang termasuk DML, Seperti

    Select diigunakan untuk memilih data dari suatu tabel atau view

    Insert digunakan untuk Menyisipkan baris dari suatu table

    Delete digunakan untuk Menghapus baris dari suatu table

    UpDate digunakan untuk Mengubah isi dari kolom (field) pada suatu table

    Commit digunakan untuk Menuliskan perubahan ke dalam disk

    Rollback dingunakan untuk Membatalkan perubahan yang dilakukan setelah perintah

    Commit yang berakhir.

  • Menggunakan SQLite (pada Windows XP) Setelah anda men-download-nya, kemudian anda extract file zip tersebut di mana saja. Dan

    copy file sqlite3.exe hasil extract tadi ke dalam direktori C:\WINDOWS\system32.

    Buatlah sebuah direktori baru dengan nama bebas (contoh : basisdata) di dalam drive D:

    (kalau tidak ada silahkan diganti dengan drive lain seperti C: dll)yang nantinya akan

    digunakan untuk tempat menyimpan file database yang akan kita buat.

    Kemudian anda buka command prompt melalui Start menu - All Program - Accessories -

    Command Prompt. Maka akan keluar jendela sebagai berikut :

    Kemudian masuklah ke direktori basisdata pada drive D: yang telah dibuat sebelumnya.

    Membuka & membuat database Membuat database dalam SQLite bisa dilakukan dengan cara mengetikkan :

    sqlite3 test.db

    maka akan tampil versi dari SQLite seperti pada gambar berikut :

    Kemudian jika kita akan menutupnya cukup dengan mengetikkan :

    .quit

  • Jika anda ingin membuka kembali database file yang telah dibuat sebelumnya. Lakukan

    langkah-langkah seperti di atas (mengetikkan nama database file yang telah tersimpan,

    contoh : sqlite3 test.db).

    Perintah SQL pada SQLite

    SQLite adalah Relational Database Management Server (RDBMS) alternatif yang

    portable (tidak perlu install), cepat, gratis, dan banyak disupport oleh bahasa pemrograman.

    Contoh RDBMS yang lain adalah MySQL, Oracle, Ms. Access, Postgree SQL, dan Ms. SQL.

    Kelebihan SQLite dibandingkan RDBMS lain (dari sudut pandang penulis) adalah :

    Portable tidak perlu install, cukup menggunakan satu file sqlite3.exe

    1 database 1 file (flat file)

    Mendukung transaction dan view

    Sangat cepat, karena berupa flat file jadi pengaksesannya lebih cepat

    SQLite menggunakan Query Language yang mirip dengan RDBMS yang lain,

    sehingga pengguna yang terbiasa menggunakan MySQL, Ms. SQL, dan lain sebagainya tidak

    perlu bersusah payah untuk beradaptasi. Meskipun, pada beberapa bagian ada sedikit

    perbedaan dan ada juga beberapa perintah yang tidak disupport oleh SQLite. Pada tulisan ini,

    yang dijelaskan adalah penggunaan SQLite pada satu sistem operasi yaitu Windows, agar

    pembahasan lebih fokus.

    Cara Penggunaan SQLite

    Untuk menggunakan SQLite, sebelumnya kita harus mendownload sqlite3.zip (untuk

    windows) yang dapat didapatkan pada sqlite.org. Setelah download, anda cukup mengekstrak

    file sqlite3.exe dan mengaksesnya melalui command prompt. SQLite siap beraksi.

    Membuat database

  • mysql> create database nama_db

    d:/sqlite/> sqlite3 nama_db

    Untuk membuat database pada SQLite, kita langsung mengakses file sqlite3.exe dan

    menuliskan nama database. Jika tidak ditemukan database tersebut maka SQLite akan

    membuatkan untuk kita, jika ditemukan SQLite akan mengakses database tersebut dan masuk

    ke dalam console SQLite (tambahkan ‘ini adalah menggunakan dua DBMS MySql dan

    Sqlite untuk perbandingan)

    mysql> drop database nama_db

    Tidak perlu menggunakan perintah, cukup hapus file database tersebut

    Membuat table

    mysql> create table nama_tabel (nama_field tipe_data(ukuran));

    sqlite> create table nama_tabel (nama_field tipe_data(ukuran));

    Perintah yang sama persis antara MySQL dan SQLite

    mysql> show tables;

    sqlite> .tables

    Menghapus table

    mysql> drop table nama_tabel;

    sqlite> drop table nama_tabel;

    Menampilkan deskripsi (skema) tabel

    mysql> desc nama_tabel;

    sqlite> .schema nama_tabel

    Menambahkan field baru pada tabel

    mysql> alter table nama_tabel add nama_field tipe_data(ukuran)

    sqlite> alter table nama_tabel add nama_field tipe_data(ukuran)

    Mengubah nama tabel

    mysql> alter table nama_tabel rename nama_tabel_baru;

    sqlite> alter table nama_tabel rename nama_tabel_baru;(tambahin query di alter add)

    Menghapus field

    mysql> alter table nama_tabel drop nama_field;

    Pada sqlite tidak ada perintah untuk menghapus field (coba cari

    Menginputkan data

    mysql> insert into nama_tabel values (nilai_1,nilai_2,nilai_3);

    sqlite> insert into nama_tabel values (nilai_1,nilai_2,nilai_3);

    Menghapus data

    mysql> delete from nama_tabel [where kondisi]

  • mysql> delete from nama_tabel [where kondisi]

    Cara penggunaan kondisi pada MySQL dan SQLite juga tidak berbeda

    Mengubah data

    mysql> update nama_tabel set nama_field1 = nilai1, nama_field2 = nilai2 [where

    kondisi]

    mysql> update nama_tabel set nama_field1 = nilai1, nama_field2 = nilai2 [where

    kondisi]

    Menampilkan data

    mysql> select [nama_field|*] from nama_tabel [where kondisi]

    sqlite> select [nama_field|*] from nama_tabel [where kondisi]

    Penggunaan kondisi (contoh menggunakan select)

    mysql> select * from nama_tabel where nama_field1 = nilai and nama_field2 like

    “string%”

    sqlite> select * from nama_tabel where nama_field1 = nilai and nama_field2 like

    “string%”

    Natural Join (relasi sederhana)

    mysql> select * from nama_tabel1 join nama_tabel2 on (nama_tabel2.field =

    nama_tabel1.field)

    sqlite> select * from nama_tabel1 join nama_tabel2 on (nama_tabel2.field =

    nama_tabel1.field)

    Right Join

    mysql> select * from nama_tabel1 right join nama_tabel2 on (nama_tabel2.field =

    nama_tabel1.field)

    Sayangnya SQLite juga tidak mensupport right join dan full outer join

    Perintah Dasar SQL dengan Fungsinya

    Perintah SELECT

    Berfungsi untuk menampilkan data dari tabel, sintak dasarnya seperti berikut :

    SELECT namakolom, namakolom,… FROM namatabel WHERE kriteria;

    Contoh :

    a. SELECT nis,nama,kelas FROM siswa;

    b. SELECT * FROM siswa;

    c. SELECT nis,nama,kelas FROM siswa WHERE kelas = ‘3C’;

    d. SELECT * FROM siswa WHERE nama like ‘AN%’ ORDER BY nama ASC;

    Keterangan :

  • 1) Perintah WHERE merupakan Optional tidak harus disertakan seperti SELECT dan

    FROM.

    2) Contoh ‘a’ menampilkan semua informasi nis,nama,kelas dari data siswa.

    3) Contoh ‘b’ menampilkan semua data siswa.

    4) Contoh ‘c’ menampilkan semua informasi nis,nama,kelas dari data siswa kelas 3C

    5) Contoh ‘d’ menampilkan semua data siswa yang namanya diawali dengan “AN” dan

    diurutkan berdasarkan nama secara Ascending.

    Perintah INSERT

    Berfungsi untuk menambah informasi/data baru kedalam tabel. Sintak dasarnya

    seperti berikut :

    INSERT INTO namatabel (kolom) VALUES (value);

    Contoh :

    INSERT INTO siswa (nis,nama,kelas) VALUES (‘103099981’,’AIDA

    AGUSTINA’,’3C’); Atau

    INSERT INTO siswa VALUES (‘103099981’,’AIDA AGUSTINA’,’3C’);

    Perintah DELETE

    Berfungsi untuk menghapus informasi/data pada tabel. Sintaknya sebagai berikut :

    DELETE FROM namatabel WHERE keriteria;

    Contoh :

    DELETE FROM siswa WHERE nama = ‘AIDA AGUSTINA’;

    Keterangan :

    Menghapus data siswa yang memiliki nama “AIDA AGUSTINA”

    Perintah UPDATE

    Berfungsi untuk memperbaiki informasi/data pada tabel. Sintaknya sebagai berikut:

    UPDATE namatabel SET namakolom=value WHERE keriteria;

    Contoh :

    UPDATE siswa SET nama=’HERDI’ WHERE nis=’10309965’;

    Keterangan :

    Mengganti nama menjadi “HERDI” untuk siswa yang mempunya nis “10309965”

    Perintah SQL Lainnya

  • Membuat Database

    CREATE DATABASE namadatabase;

    Contoh : create database sekolah;

    Ket : Membuat dabase baru dengan nama sekolah

    Menghapus Database

    DROP DATABASE namadatabase;

    Contoh : drop database sekolah;

    Ket : Menghapus database sekolah

    Membuat Tabel

    CREATE TABLE namatabel (namakolom typekolom(size),namakolom

    typekolom(size),…);

    Contoh : create table siswa (nis varchar(15),nama varchar(35),kelas int(3));

    Ket : Membuat tabel baru dengan nama siswa yang terdiri dari 3 fields/kolom.

    Kolom nis bertype string, kolom nama bertype string dan kelas bertype integer.

    Mengapus Tabel

    DROP TABLE namatabel;

    Contoh : drop table siswa;

    Ket : Menghapus tabel siswa

    Mengganti Nama Tabel

    RENAME namtabelyangdiganti TO namatabelbaru;

    Contoh : rename siswa to mahasiswa;

    Ket : Mengubah tabel siswa menjadi mahasiswa

    Menambah Kolom/Field

    ALTER TABLE namatabel ADD namakolom typekolom(size);

    Contoh : alter table siswa add alamat varchar(50);

    Ket : Menambahkan kolom baru dengan nama alamat bertype string panjang 50

    karakter.

    Mengganti Nama Kolom/Field

    ALTER TABLE namatabel CHANGE namakolomyangdiganti namakolombaru

    typekolom(size);

    Contoh : alter table siswa change alamat alamat_rumah varchar(50);

    Ket : Mengubah kolom alamat menjadi alamat_rumah bertype string dengan

    panjang 50 karakter

  • Mengganti Type atau Size Kolom/Field

    ALTER TABLE namatabel MODIFY namakolom typekolom(size);

    Contoh : alter table siswa modify nama varchar(40);

    Ket : Mengubah panjang karakter nama dari tabel siswa menjadi 40 karakter.

    Menghapus Kolom/Field

    ALTER TABLE namatabel DROP namakolom;

    Contoh : alter table siswa drop alamat_rumah;

    Ket : Menghapus Kolom alamat_rumah dari tabel siswa.

  • BAB V

    Koneksi Database : SQL dan JDBC

    Pengenalan

    Perintah – perintah dalam lingkungan databases adalah :

    SELECT

    Pernyataan SELECT digunakan untuk query database tentang informasi database yang

    mana yang ditampilkan sebagai data. Format dasar dari pernyataan SELECT adalah:

    SELECT kolom FROM namatabel where kondisi

    Pernyataan SQL SELECT dimulai dengan kata kunci SELECT, diikuti oleh tanda koma dari

    kolom-kolom yang akan ditampilkan, kemudian clause FORM yang menentukan tabel yang

    berisi data yang akan ditampilkan. Secara bebas, clause WHERE dapat ditambahkan pada

    pernyataan SELECT, menjelaskan sebuah set dari kondisi yang harus ditemukan oleh data

    yang akan dikembalikan oleh database. Clause WHERE tidak dipisahkan oleh koma;

    melainkan, dia tehubung oleh pernyataan AND atau OR yang fungsinya sama dengan logik

    mereka.

    Menetapkan * sebagai nama kolom memberitahu database server untuk meretrieve

    semua kolom yang tersedia didalam tabel. Contoh, jika kita ingin meretrieve semua data yang

    terdapat pada table yang bernama users :

    SELECT * from users;

    Jika kita hanya ingin melihat untuk users yang bernama belakang Smith, pernyataan SQL-nya

    berupa:

    SELECT * from users where nama ='Smith';

    SQL tidak bersifat case-sensitive pada kata kuncinya, SQL case-sensitive pada nilainya.

    Pernyataan berikut ini akan menghasilkan data yang berbeda jika dibandingkan dengan

    pernyataan diatas:

    SELECT * from users where nama ='sMith';

    Operator lain yang dapat digunakan pada conditional statements:

    < - kurang dari

    = - lebih besar dari atau sama dengan

    like – sama dengan

  • INSERT

    Pernyataan INSERT digunakan untuk memasukkan baris data yang baru dari informasi

    tabel database yang aktif. Struktur dasar dari pernyataan INSERT adalah :

    INSERT INTO nama-tabel VALUES(nilai1, nilai2, ...)

    Dimana nama-tabel adalah nama dari tabel yang akan berisi baris data yang baru. Parameter

    yang diberikan didalam kata kunci VALUES adalah daftar data dari nilai yang akan

    ditambahkan kedalam tabel. Jika seperti ini dimana hanya tabel yang ditetapkan, SQL akan

    memasukkan nilai yang diberikan pada pernyataan dengan field didalam database berdasarkan

    nilai yang dipesan dan field yang ditentukan pada tabel database.

    Jika, sebagai contoh, kita mempunyai tabel dengan nama users, dengan field userid,

    nama, alamat(pada pemesanan), pada baris berikut ini akan menambahkan data yang baru ke

    tabel:

    INSERT INTO users VALUES(199700651, 'Jeni Master', 'UP Ayala Technopark');

    Penting untuk diingat bahwa semua panggilan untuk INSERT harus diikuti aturan integritas

    pada tabel data. Oleh karena itu, jika sebuah field pada database ditetapkan non-null, berbagai

    usaha untuk memasukkan nilai-null kedalam field tersebut akan menyebabkan error pada

    database.

    UPDATE

    Pernyataan UPDATE akan mengupdate baris yang dipilih pada tabel, sebagai lawan

    dari pernyataan INSERT yang menambahkan baris data baru. Format dasar pernyataan

    UPDATE adalah:

    UPDATE nama-tabel set nilai-kolom WHERE kondisi

    Dimana nama-tabel adalah nama dari tabel yang berisi baris yang akan diupdate, dan nilai-

    kolom adalah daftar data dari nama kolom dan nilainya. Secara bebas, daftar data dari kondisi

    dapat ditambahkan secara spesifik dengan baris yang akan dimodofikasi pada tabel. Jika tidak

    diber kondisi, maka update data akan dilakukan pada tiap-tiap baris didalam tabel yang

    ditentukan.

    Berbagai update harus disesuaikan dengan aturan integritas pada database. Sebagai

    contoh, menyetting nilai null pada kolom yang sudah ditetapkan dengan nilai NOT NULL

    akan menyebabkan pernyataan tidak akan dijalankan dan terdapat pesan error pada relasi

    database.

  • DELETE

    Pernyataan DELETE menghapus baris data pada tabel yang dipilih. Struktur dasar dari

    pernyataan DELETE adalah :

    DELETE FROM nama-tabel WHERE kondisi

    Dimana nama-tabel adalah nama dari tabel yang berisi baris data yang akan dihapus.

    Daftar data dari kondisi secara bebas dapat dispesifikasikan sebaik mungkin. Jika tidak diberi

    kondisi, maka pernyataan akan mneghapus semua baris data pada tabel yang telah ditentukan.

    JDBC

    Sebelum kita membuat data base , kita harus memastikan dalam editor java dalam hal ini

    seperti blue j . ada aplikasi JAR nya . untuk yang kita pelajari ini adalah mengunakan

    sqlitejdbc .jar

    Caranya yaitu:

    1. buka blue j

    2. lalu pilih tool preferences libraries

    3. jka ada JDBC nya akan terlihat seprti gambar di bawah ini

    4. jika tidak ada JDBC akan kosong yang ada tanda garisnya

  • 5. jika tidak ada sqlite.jar nya, harus di ADD sqlite.jar dalam BLUE J nya , caranya

    sama sepeti point 2 .

    Java menyediakan standard API untuk mengakses database yang disebut Java Database

    Connectivity (JDBC) API. Dengan menggunakan ini, para pengembang memungkinkan dapat

    mengakses database tanpa memperdulikan vendornya; para vendor menyediakan implementasi

    untuk abstract interfaces yang dijelaskan didalam API, penyediaan tersebut sama dengan set

    dari kemampuan koneksi untuk para pengembang. Berikut ini merupakan class kunci dari

    JDBC API, semuanya akan dijelaskan secara detail kemudian :

    java.sql.Connection – membuat sebuah koneksi dengan database. Secara

    abstrakmemberikan detail dari bagaimana cara untuk berkomunikasi dengan database

    server.

    java.sql.DriverManager – mengatur JDBC driver yang digunakan oleh aplikasi. Pada

    hubungannya dengan proper driver URL dan proper authentication, dapat menyediakan

    aplikasi dengan valid instances dari object koneksi.

    javax.sql.DataSource – memisahakan detail (URL, authentication details) dari bagaimana

    untuk memperoleh sebuah koneksi ke database. Merupakan method terbaru dan yang lebih

    disukai dari obtaining Connection objects.

    java.sql.Statement – menyediakan method untuk para pengembang dalam mengeksekusi

    pernyataan SQL.

    java.sql.ResultSet – menyediakan hasil dari sebuah pernyataan SQL. Objects ini sering

    dikembalikan dari method yang terletak pada Statement object.

    java.sql.DriverManager

    Dengan menggunakan class ini, pengembang dapat meretrieve sebuah Connection

    object yang kemudian dapat dia gunakan untuk melakukan aktifitas database. Berikut ini dua

    langkah yang dianjurkan:

    1. Pertama, JDBC driver harus diregistrasi dengan DriverManager. Hal ini dapat dikerjakan

    dengan menggunakan method Class.forName untuk menge-load driver's class definition

    kedalam memori.

    2. Kedua, menggunakan method getConnection pada DriverManagerm untuk menyediakan

    JDBC URL, sebaik username dan password supplying untuk akses database. URL harus

    mengikuti syntax yang dianjurkan oleh implementasi database tertentu.

    Dibawah ini adalah contoh dari bagaimana mendapatkan koneksi dari database

    PostgreSQL. Sekali lagi, URL dan driver tepat untuk implementasi database yang digunakan.

    Untuk database yang lain, periksalah dokumen yang disediakan.

  • String jdbcURL = jdbc:mysql://localhost:3306/databaseku";

    String user = "root";

    String password = "";

    Connection conn = null;

    try {

    Class.forName("com.mysql.jdbc.Driver");

    conn = DriverManager.getConnection(url, user, password);

    ...

    } catch (SQLException e) {

    // perform error handling here

    }

    Saat ini merupakan cara yang valid dari meretrieve sebuah Connection object, method

    ini menganjurkan para pengembang untuk tetap mengikuti method tersebut dari seperti detail

    sebagai driver class name, URL dianjurkan untuk akses ke database, sedangkan username dan

    password tepat untuk penggunaan database. Detail-detail ini paling banyak dipakai pada

    berbagai aplikasi. Dan juga, mengatur URL dan driver name pada kode membuatnya lebih

    sulit untuk aplikasi dalam menukar implementasi database, jika hal itu diperlukan.

    javax.sql.DataSource

    DataSource merupakan interface yang digambarkan pada JDBC API sejak versi 2 dari

    spesifikasinya. Sekarang saatnya direkomendasikan untuk para pengembang dalam

    mendapatkan Connection object. Retrieval dari Connection object terjadi secara langsung :

    cara sederhana memanggil method getConnection() dalam kejadian yang valid dari

    DataSource. Hal tersebut memperoleh sebuah kejadian dari DataSource yang sekarang dapat

    menyelesaikan sebuah masalah untuk beberapa pengembang(developer).

    Sejak DataSource merupakan sebuah interface, sebuah instance tidak dapat dibuat oleh

    pengembang dengan menggunakan operator yang baru secara sederhana. Hal tersebut

    direkomendasikan jika kita memilih aplikasi server dengan menggunakan aturan pembuatan

    dari DataSource objects untuk kita.

    java.sql.Connection / java.sql.Statement

    java.sql.Connection objects menghadirkan connections yang nyata ke database. Sekali

    kita mempunyai sebua instance dari object ini, kita dapat membuat sebuah instance dari

    sebuah Statement object, dimana kemudian kita dapat menggunakan query SQL.

  • Statement object menyediakan beberapa method untuk mengeksekusi perintah SQL. Dua

    method yang sering digunakan adalah :

    - executeQuery – menggunakan pernyataan SELECT dan mengembalikan hasil dari operasi

    sebagai ResultSet object

    - execute Update – menggunakan pernyataan INSERT, UPDATE, atau DELETE dan

    mengembalikan jumlah dari baris yang dipengaruhi sebegai integer primitive.

    Dibawah ini adalah bagian dari contoh kode outlining prosedur, bersama dengan

    beberapa error yang sangat dasar - menangani prosedur.

    Context ctxt = null;

    DataSource ds = null;

    Connection conn = null;

    Statement stmt = null;

    ResultSet rs = null;

    try {

    ctxt = new InitialContext();

    ds = (DataSource)ctxt.lookup("jdbc/mySQL");

    conn = ds.getConnection();

    stmt = conn.createStatement()

    rs = stmt.executeQuery(“SELECT * FROM USERS”);

    }catch(NamingException x)

    System.err("Datasource tidak ditemukan);

    } catch (SQLException x)

    System.err("Terjadi error saat mengeksekusi query SQL”);

    }

    java.sql.ResultSet

    Sebuah ResultSet object merupakan hasil dari sebuah query ke database. Data di dalam

    ResultSet object dapat divisualisasikan sebagai tabel, kemudian informasinya dapat diretrieve

    satu baris pada saat itu juga. Dengan ResultSet object menjaga proses tetap pada baris yang

    ditentukan.

    Untuk iterasi di atas baris yang diarahkan pada ResultSet, telah disediakan method

    yang disebut next(). Memanggil method next() memindahkan internal pointer menjaga

  • ResultSetobject ke baris berikutnya. Method ini mengembalikan nilai true jika ditemukan baris

    berikutnya, dan nilai false jika tidak ada baris berikutnya.

    while (rs.next()) {

    //membaca data dari baris sebelum disini }

    Contoh dari iterasi ResultSet

    Untuk meretrieve data dari tiap-tiap baris, ResultSet object menyediakan beberapa get

    method. Yaitu sebuah method getString untuk meretrieve data sebagai String, method getInt

    untuk meretrieve data integer, method getBoolean untuk meretrieve data boolean, dll. Dalam

    berbagai kasus, method-method ini juga menerima sebagai parameter nomer kolom yang berisi

    data, atau nama kolom.

    Context ctxt = null;

    DataSource ds = null;

    Connection conn = null;

    Statement stmt = null;

    ResultSet rs = null;

    try {

    ctxt = new InitialContext();

    ds = (DataSource)ctxt.lookup(“jdbc/mySQL”);

    conn = ds.getConnection();

    stmt = conn.createStatement();

    rs = stmt.executeQuery("SELECT * FROM USERS);

    while (rs.next()) {

    String userName = rs.getString("name");

    String address = rs.getString(“address”);

    int userID = = rs.getInt(userid);

    }

    }catch(NamingException ex){

    System.err(“Nama datasourse tidak ditemukan”);

    }catch()SQLException ex{

    System.err(“Terjadi error saat mengeksukesi perintah SQL”);}

  • Contoh membuat database menggunakan java

    01.import java.sql.*;

    02.

    03.public class DBPertamaKu {

    04. public static void main(String[] args) throws Exception {

    05. Class.forName("org.sqlite.JDBC");

    06. Connection conn =

    07. DriverManager.getConnection("jdbc:sqlite:latihan1.db");

    08. Statement stat = conn.createStatement();

    09. stat.executeUpdate("drop table if exists mhs;");

    10. stat.executeUpdate("create table mhs (npm varchar(15), nama

    varchar(50));");

    11. PreparedStatement prep = conn.prepareStatement(

    12. "insert into mhs values (?, ?);");

    13.

    14. prep.setString(1, "200643500107");

    15. prep.setString(2, "budi");

    16. prep.addBatch();

    17. prep.setString(1, "200643500116");

    18. prep.setString(2, "agung");

    19. prep.addBatch();

    20. prep.setString(1, "200643500148");

    21. prep.setString(2, "Achmad");

    22. prep.addBatch();

    23.

    24. conn.setAutoCommit(false);

    25. prep.executeBatch();

    26. conn.setAutoCommit(true);

    27.

    28. ResultSet rs = stat.executeQuery("select * from mhs;");

  • 29. System.out.println(" NPM\t\t Nama");

    30. while (rs.next()) {

    31. System.out.print(rs.getString("npm"));

    32. System.out.println("\t" + rs.getString("nama"));

    33. }

    34. rs.close();

    35. conn.close();

    36. }

    37.}

    Penjelasan :

    baris 1: memanggil package sql yang beberapa class-nya akan kita pakai nanti.

    baris 3: throws Exception digunakan untuk menangani error yang akan mungkin terjadi pada saat

    program dijalankan.

    baris 5: Class.forName pada dasarnya berfungsi untuk memanggil suatu class dalam suatu

    package. Dalam kasus ini statement tersebut memanggil class "JDBC" yang berada dalam

    package "org.sqlite". sumber

    baris 6: (Connection) membuat objek koneksi ke database latihan1.db.

    baris 8: (Statement) objek yang digunakan untuk mengeksekusi pernyataan SQL.

    baris 9: (executeUpdate) mengeksekusi pernyataan SQL yg diberikan, yang mungkin berupa

    pernyataan INSERT, UPDATE atau DELETE, atau pernyataan SQL yang tidak mengembalikan

    apa-apa seperti pernyataan DDL.

    baris 11: Sebuah pernyataan SQL yang dikompilasi dan disimpan dalam obyek

    PreparedStatement. Objek ini kemudian dapat digunakan untuk mengeksekusi pernyataan ini

    berkali-kali secara efisien.

    baris 28: ResultSet adalah sebuah tabel virtual yang mewakili data hasil eksekusi pernyataan

    query SELECT.

    http://cephas.net/blog/2005/07/31/java-classfornamestring-classname-and-jdbc/