mport java.sql.*; 

public class MySQLDB { 

   static Connection cn ; 

   public static Connection getConnection(){ 

         try{ 

 cn =  

DriverManager.getConnection("jdbc:mysql://localhost/dbjava", "nina",  

 193 

 

 

10 

11 

12 

13 

14 

15 

16 

"123"); 

 System.out.println("Koneksi berhasil");     

         }catch(SQLException se){ 

   se.printStackTrace(); 

             } 

           return cn; 

       } 

    public static void main(String[] args){ 

 MySQLDB.getConnection(); 

   } 

Output 

 

 

Contoh program dengan statement insert,update,delete 

Kode 13.2 MySQLDB.java 

 

 

10 

import java.sql.*; 

public class MySQLDB { 

 static Connection cn ; 

 public static Connection getConnection(){ 

    if (cn==null){ 

        try{ 

          cn =  

DriverManager.getConnection("jdbc:mysql://localhost/dbjava", "nina",  

"123"); 

         System.out.println("Koneksi berhasil");    

       }catch(SQLException se){ 

 se.printStackTrace(); }     

 194 

 

11 

12 

13 

14 

       } 

         return cn; 

    } 

Kode 13.3 TestDB.java 

10 

11 

12 

13 

14 

15 

16 

17 

18 

 

19 

20 

21 

22 

23 

24 

25 

26 

import javafx.application.Application; 

import javafx.stage.Stage; 

import javafx.scene.Scene; 

import javafx.scene.layout.HBox; 

import javafx.scene.control.Button; 

import java.sql.*; 

public class TestDB extends Application { 

 @Override 

 public void start(Stage s){ 

    HBox hb= new HBox(); 

    Button btInsert = new Button("Insert"); 

     Button btUpdate = new Button("Update"); 

     Button btDel = new Button("Delete"); 

     btInsert.setOnAction(e->{ 

         try{ 

             Connection cn=MySQLDB.getConnection(); 

             Statement st = cn.createStatement(); 

             String sql="insert into tbmhs(idmhs, nim, nama,  

kota_asal) values ('6','A11.2017.10111','ARI','KUDUS')";  

              st.executeUpdate(sql); 

              System.out.println("Insert berhasil ...");  

                     }catch(SQLException se){ 

                   se.printStackTrace(); 

               } 

         }); 

 btUpdate.setOnAction(e->{ 

 

 195 

 

27 

28 

29 

30 

 

31 

32 

33 

34 

35 

36 

37 

38 

39 

40 

41 

42 

43 

44 

45 

46 

47 

48 

49 

50 

51 

52 

53 

          try{ 

           Connection cn=MySQLDB.getConnection(); 

            Statement st = cn.createStatement(); 

            String sql="Update tbmhs set nama='HERU' where  

idmhs=1";  

            st.executeUpdate(sql); 

             System.out.println("UPDATE berhasil ...");   

       }catch(SQLException se){ 

  se.printStackTrace();  } 

    });    

 btDel.setOnAction(e->{ 

      try{ 

  Connection cn=MySQLDB.getConnection(); 

  Statement st = cn.createStatement(); 

  String sql="delete from  tbmhs where idmhs=7";  

  st.executeUpdate(sql); 

  System.out.println("Delete berhasil ...");   

  }catch(SQLException se){ 

   se.printStackTrace(); 

   } 

 });    

 hb.getChildren().addAll(btInsert,btUpdate,btDel); 

 Scene sc = new Scene(hb,300,200); 

 s.setTitle("Test Database"); 

 s.setScene(sc); 

 s.show(); 

        } 

Output 

 

 

 

 196 

 

 

Contoh program dengan PreparedStatement insert,update,delete 

Kode 13.4 TestDB2.java 

10 

11 

12 

13 

14 

15 

16 

17 

 

18 

19 

20 

21 

22 

23 

24 

25 

26 

27 

import javafx.application.Application; 

import javafx.stage.Stage; 

import javafx.scene.Scene; 

import javafx.scene.layout.HBox; 

import javafx.scene.control.Button; 

import java.sql.*; 

public class TestDB2 extends Application { 

  @Override 

  public void start(Stage s){ 

 HBox hb= new HBox(); 

 Button btInsert = new Button("Insert"); 

 Button btUpdate = new Button("Update"); 

 Button btDel = new Button("Delete"); 

 btInsert.setOnAction(e->{ 

   try{ 

     Connection cn=MySQLDB.getConnection(); 

     String sql="insert into tbmhs(idmhs,nim,nama,kota_asal)  

values (?,?,?,?)";  

     PreparedStatement pst = cn.prepareStatement(sql); 

      pst.setInt(1,7); 

     pst.setString(2,"A11.2018.90001"); 

     pst.setString(3,"UMAR"); 

     pst.setString(4,"SEMARANG"); 

     pst.executeUpdate() 

         System.out.println("Insert berhasil ...");   

    }catch(SQLException se){ 

       se.printStackTrace(); 

   } 

 197 

 

28 

29 

30 

31 

32 

33 

34 

35 

36 

37 

38 

39 

40 

41 

42 

43 

44 

45 

46 

47 

48 

49 

50 

51 

52 

53 

54 

55 

56 

57 

58 

59 

 }); 

 btUpdate.setOnAction(e->{ 

    try{ 

      Connection cn=MySQLDB.getConnection(); 

      String sql="Update tbmhs set nama='HERU' where idmhs=?"; 

           PreparedStatement pst = cn.prepareStatement(sql);  

      pst.setInt(1,1);      

      pst.executeUpdate(); 

     System.out.println("Update berhasil ...");    

     }catch(SQLException se){ 

    se.printStackTrace(); 

   } 

    });    

 btDel.setOnAction(e->{ 

    try{ 

      Connection cn=MySQLDB.getConnection();   

      String sql="delete from  tbmhs where idmhs=?";  

      PreparedStatement pst = cn.prepareStatement(sql); 

  

      pst.setInt(1,7);      

      pst.executeUpdate(); 

      System.out.println("Delete berhasil ...");   

    

      }catch(SQLException se){ 

  se.printStackTrace(); 

    } 

  });    

  hb.getChildren().addAll(btInsert,btUpdate,btDel); 

     Scene sc = new Scene(hb,300,200); 

  s.setTitle("Test Database"); 

  s.setScene(sc); 

  s.show(); 

 } 

 198 

 

60 } 

 

Memproses ResultSet dengan menampilkan di tabelview 

Kode 13. 5 MHS.java 

 

10 

11 

12 

13 

14 

15 

16 

17 

 

18 

19 

20 

21 

22 

23 

24 

25 

public class MHS { 

    private int idmhs; 

    private String nim; 

    private String nama; 

    private String kota_asal; 

 

    @Override 

    public String toString() { 

        return "MHSM{" + "idmhs=" + idmhs + ", nim=" + nim + ", nama="  

+ nama + ", kota_asal=" + kota_asal + '}'; 

    } 

    public MHS(){ 

    } 

    public int getIdmhs() { 

        return idmhs; 

    } 

    public void setIdmhs(int idmhs) { 

        this.idmhs = idmhs; 

    } 

    public String getNim() { 

        return nim; 

    } 

 

    public void setNim(String nim) { 

        this.nim = nim; 

    } 

 

 199 

 

26 

27 

28 

29 

30 

31 

32 

33 

34 

35 

36 

37 

38 

39 

40 

41 

    public String getNama() { 

        return nama; 

    } 

 

    public void setNama(String nama) { 

        this.nama = nama; 

    } 

 

    public String getKota_asal() { 

        return kota_asal; 

    } 

 

    public void setKota_asal(String kota_asal) { 

        this.kota_asal = kota_asal; 

    }     

Kode 13.6 TestDB3.java 

10 

11 

12 

13 

14 

15 

import javafx.application.Application; 

import javafx.stage.Stage; 

import javafx.scene.Scene; 

import javafx.scene.layout.HBox; 

import javafx.scene.control.TableView; 

import java.sql.*; 

import javafx.collections.FXCollections; 

import javafx.collections.ObservableList; 

import javafx.geometry.Pos; 

import javafx.scene.control.TableColumn; 

import javafx.scene.control.cell.PropertyValueFact 

 

public class TestDB3 extends Application { 

  @Override 

  public void start(Stage s){   

 200 

 

16 

17 

18 

19 

20 

21 

22 

23 

24 

25 

 

26 

 

27 

 

28 

 

29 

30 

 

31 

 

32 

 

33 

 

34 

35 

36 

37 

38 

 Scene sc = new Scene(getHBTabel(),600,400); 

 s.setTitle("Test Database"); 

 s.setScene(sc); 

 s.show();  

   } 

 public HBox getHBTabel(){ 

                   HBox hb= new HBox(); 

                   TableView<MHS> tbMHS = new TableView(); 

                   hb.getChildren().add(tbMHS); 

                  TableColumn<MHS,Integer> colIdmhs= new  

TableColumn("ID"); 

                  TableColumn<MHS,String> colNim=new  

TableColumn("NIM"); 

                  TableColumn<MHS,String> colNama=new  

TableColumn("Nama"); 

                  TableColumn<MHS,String> colKota_asal=new  

TableColumn("Kota Asal"); 

        

                  colIdmhs.setCellValueFactory(new  

PropertyValueFactory<>("idmhs")); 

                  colNim.setCellValueFactory(new  

PropertyValueFactory<>("nim")); 

                  colNama.setCellValueFactory(new  

PropertyValueFactory<>("nama")); 

                  colKota_asal.setCellValueFactory(new  

PropertyValueFactory<>("kota_asal")); 

                  

colIdmhs.prefWidthProperty().bind(tbMHS.widthProperty().divide(4)); 

                  

colNim.prefWidthProperty().bind(tbMHS.widthProperty().divide(4)); 

                  

colNama.prefWidthProperty().bind(tbMHS.widthProperty().divide(4)); 

          

 201 

 

39 

40 

41 

42 

43 

44 

45 

46 

47 

48 

49 

50 

51 

52 

53 

54 

55 

56 

57 

58 

59 

60 

61 

62 

63 

64 

colKota_asal.prefWidthProperty().bind(tbMHS.widthProperty().divide(4));   

              

tbMHS.getColumns().addAll(colIdmhs,colNim,colNama,colKota_asal); 

                  tbMHS.setItems(getAllMhs());       

      return hb; 

 }    

 public ObservableList<MHS> getAllMhs(){ 

         

ObservableList<MHS> lmhs= FXCollections.observableArrayList(); 

        try {        

            Statement st=MySQLDB.getConnection().createStatement(); 

            String sql="select * from tbmhs";           

            ResultSet rs=st.executeQuery(sql); 

            rs.beforeFirst(); 

            while(rs.next()){ 

                  MHS m = new MHS(); 

                  m.setIdmhs(Integer.parseInt(rs.getString(1))); 

                  m.setNim(rs.getString(2)); 

                  m.setNama(rs.getString(3)); 

                  m.setKota_asal(rs.getString(4)); 

                  lmhs.add(m); 

                  System.out.println(m); 

            }  

          } catch (SQLException ex) { 

              ex.printStackTrace();}               

          return lmhs; 

      }   

Output 

 

 202 

 

 

Metadata 

interface Connection membuat koneksi terhadap database, koneksi yang membuat statement 

sql dapat dieksekusi dan dapat menghasilkan data resultset. Connetion juga menyediakan 

akses informasi meta data dari sebuah database dimana informasi metadata tersebut 

menjelaskan kapabilitas dari suatu database diantaranya dukungan terhadap bentuk SQL,store 

procedure dll. 

Untuk membuat obyek dari Metadata sebuah database digunakan method getMetadata pada 

obyek koneksi. 

DatabaseMetaData dbMD = conn.getMetaData(); 

Contoh 

Kode 13.7 TestBMetaData 

 

 

 

 

 

10 

 

11 

 

import java.sql.*; 

public class TestBMetaData { 

        public static void main(String[] args) throws SQLException,  

ClassNotFoundException { 

              Connection connection =  

DriverManager.getConnection("jdbc:mysql://localhost/javadb", "root",  

""); 

  System.out.println("Database connected"); 

  DatabaseMetaData dbMetaData = connection.getMetaData(); 

  System.out.println("database URL: " + dbMetaData.getURL()); 

  System.out.println("database username: " + 

dbMetaData.getUserName()); 

  System.out.println("database product name: " + 

dbMetaData.getDatabaseProductName()); 

  System.out.println("database product version: " + 

dbMetaData.getDatabaseProductVersion()); 

  System.out.println("JDBC driver name: " + 

dbMetaData.getDriverName()); 

 203 

 

12 

 

13 

 

14 

 

15 

 

16 

 

17 

 

18 

19 

20 

  System.out.println("JDBC driver version: " + 

dbMetaData.getDriverVersion()); 

  System.out.println("JDBC driver major version: " + 

dbMetaData.getDriverMajorVersion()); 

  System.out.println("JDBC driver minor version: " + 

dbMetaData.getDriverMinorVersion()); 

  System.out.println("Max number of connections: " + 

dbMetaData.getMaxConnections()); 

  System.out.println("MaxTableNameLength: " + 

dbMetaData.getMaxTableNameLength()); 

  System.out.println("MaxColumnsInTable: " + 

dbMetaData.getMaxColumnsInTable()); 

  connection.close(); 

  } 

 

 

 

 

Kode 13.8 merupakan contoh penggunaan MetaData. 

Kode 13.8 TestRSMetaData.java 

import java.sql.*; 

 

 204 

 

 

 

 

10 

11 

 

12 

13 

 

14 

15 

16 

17 

 

18 

19 

 

20 

 

21 

22 

23 

24 

25 

26 

public class TestRSMetaData { 

     public static void main(String[] args) throws SQLException,  

ClassNotFoundException { 

        // Connect to a database 

          Connection connection =  

DriverManager.getConnection("jdbc:mysql://localhost/dbjava",  

"root", "");           

          System.out.println("Database connected"); 

        // Create a statement 

        Statement statement = connection.createStatement(); 

         // Execute a statement 

          ResultSet resultSet = statement.executeQuery("select *  

from tbmhs"); 

          

          ResultSetMetaData rsMetaData =  

resultSet.getMetaData(); 

          for (int i = 1; i <= rsMetaData.getColumnCount(); i++) 

 System.out.printf("%-12s\t", rsMetaData.getColumnName(i)); 

  System.out.println(); 

  // Iterate through the result and print the students'  

column 

  while (resultSet.next()) { 

  for (int i = 1; i <= rsMetaData.getColumnCount();  

i++) 

   System.out.printf("%-12s\t",  

resultSet.getObject(i)); 

   System.out.println(); 

   } 

   // Close the connection 

   connection.close(); 

  } 

 205 

 

Output 

 

 

Contoh Aplikasi menggunakan desain pattern MVC: 

 

 

 

 

 

 

 

 

 

 

 

Gambar 13.3 Hasil program 

 206 

 

Gambar 13.9 Project terdiri dari package controller, model dan view. 

Source code lengkap 

Package view 

Kode 13.9 AplikasJiFX5.java 

10 

11 

12 

13 

package aplikasijfx5.view; 

 

import javafx.application.Application; 

import javafx.event.ActionEvent; 

import javafx.event.EventHandler; 

import javafx.scene.Scene; 

import javafx.scene.control.Button; 

import javafx.scene.layout.HBox; 

import javafx.scene.layout.StackPane; 

import javafx.stage.Stage; 

public class AplikasJiFX5 extends Application { 

     static PanelKiri pnKiri= new PanelKiri();  

     static PanelKanan pnKanan = new PanelKanan(); 

 207 

 

14 

15 

16 

17 

18 

 

19 

20 

21 

22 

23 

24 

25 

26 

27 

28 

29 

    @Override 

    public void start(Stage primaryStage) { 

        HBox hbMain = new HBox(10); 

       

pnKiri.prefWidthProperty().bind(hbMain.widthProperty().divide(3)); 

        pnKanan.prefWidthProperty().bind(hbMain. 

widthProperty().subtract(hbMain.widthProperty().divide(3))); 

        hbMain.getChildren().addAll(pnKiri,pnKanan); 

        Scene scene = new Scene(hbMain, 800, 600); 

         

        primaryStage.setTitle("Data MHS"); 

        primaryStage.setScene(scene); 

        primaryStage.show(); 

    } 

    public static void main(String[] args) { 

        launch(args); 

    }     

Kode 13.10 PanelKanan.java 

10 

11 

12 

13 

package aplikasijfx5.view; 

 

import aplikasijfx5.controller.MHSC; 

import aplikasijfx5.model.MHSM; 

import java.util.Optional; 

import javafx.geometry.Pos; 

import javafx.scene.control.Alert; 

import javafx.scene.control.Alert.AlertType; 

import javafx.scene.control.Button; 

import javafx.scene.control.ButtonType; 

import javafx.scene.control.TableColumn; 

import javafx.scene.control.TableView; 

import javafx.scene.control.TextField; 

 208 

 

14 

15 

16 

17 

18 

19 

20 

21 

22 

23 

24 

25 

26 

27 

28 

29 

30 

31 

32 

33 

34 

35 

36 

37 

38 

39 

40 

41 

42 

43 

44 

45 

import javafx.scene.control.cell.PropertyValueFactory; 

import javafx.scene.image.Image; 

import javafx.scene.image.ImageView; 

import javafx.scene.layout.HBox; 

import javafx.scene.layout.VBox; 

 

public class PanelKanan  extends VBox{ 

    HBox hbSearch = new HBox(10);     

    TextField tfSearch = new TextField(); 

    Button btSearch,btAdd,btEdit,btDelete ; 

    TableView<MHSM> tbMHS = new TableView(); 

    MHSC mhsc = new MHSC();  

    public PanelKanan(){            

      Image imgAdd = new Image("image/tambah.png"); 

 Image imgEdit = new Image("image/edit.png"); 

 Image imgDel = new Image("image/del.png"); 

      Image imgSearch = new Image("image/search.png"); 

  

      ImageView ivAdd = new ImageView(imgAdd); 

 ivAdd.setFitWidth(70); 

 ivAdd.setFitWidth(30); 

 ImageView ivEdit = new ImageView(imgEdit); 

 ivEdit.setFitWidth(70); 

 ivEdit.setFitWidth(30); 

 ImageView ivDel = new ImageView(imgDel);   

      ImageView ivSearch = new ImageView(imgSearch); 

      btSearch = new Button("Search",ivSearch); 

      btAdd = new Button("Add",ivAdd); 

      btEdit = new Button("Edit",ivEdit); 

      btDelete = new Button("Delete",ivDel); 

 btAdd.setPrefWidth(120); 

 btAdd.setPrefHeight(40); 

 209 

 

46 

47 

48 

49 

50 

51 

52 

53 

54 

55 

56 

 

57 

58 

 

59 

 

60 

 

61 

 

62 

63 

64 

65 

66 

67 

68 

69 

 btEdit.setPrefWidth(120); 

 btEdit.setPrefHeight(40); 

 btDelete.setPrefWidth(120); 

 btDelete.setPrefHeight(40);  

      btSearch.setPrefWidth(120);  

      btSearch.setPrefHeight(40);         

      tfSearch.setPrefWidth(200); 

      TableColumn<MHSM,Integer> colIdmhs= new TableColumn("ID"); 

      TableColumn<MHSM,String> colNim=new TableColumn("NIM"); 

      TableColumn<MHSM,String> colNama=new TableColumn("Nama"); 

      TableColumn<MHSM,String> colKota_asal=new TableColumn("Kota  

Asal"); 

         

        colIdmhs.setCellValueFactory(new  

PropertyValueFactory<>("idmhs")); 

        colNim.setCellValueFactory(new 

PropertyValueFactory<>("nim")); 

        colNama.setCellValueFactory(new  

PropertyValueFactory<>("nama")); 

        colKota_asal.setCellValueFactory(new  

PropertyValueFactory<>("kota_asal")); 

        

colIdmhs.prefWidthProperty().bind(tbMHS.widthProperty().divide(4)); 

        

colNim.prefWidthProperty().bind(tbMHS.widthProperty().divide(4)); 

        

colNama.prefWidthProperty().bind(tbMHS.widthProperty().divide(4)); 

        

colKota_asal.prefWidthProperty().bind(tbMHS.widthProperty(). 

divide(4)); 

         

     

tbMHS.getColumns().addAll(colIdmhs,colNim,colNama,colKota_asal); 

        tbMHS.setItems(mhsc.getAllMhs());         

 210 

 

70 

71 

 

72 

73 

74 

75 

76 

77 

78 

79 

80 

81 

82 

83 

84 

 

85 

86 

87 

88 

89 

90 

91 

92 

 

93 

94 

95 

96 

97 

98 

        //hbSearch.setAlignment(Pos.CENTER); 

        

hbSearch.getChildren().addAll(btAdd,btEdit,btDelete,tfSearch, 

btSearch); 

        this.getChildren().addAll(hbSearch,tbMHS);     

        btAdd.setOnMouseClicked(e->{ 

            AplikasJiFX5.pnKiri.aktif(true);      

            AplikasJiFX5.pnKiri.blAdd=true; 

            AplikasJiFX5.pnKiri.tfID.requestFocus(); 

        }); 

        btSearch.setOnMouseClicked(e->{ 

            

this.tbMHS.setItems(mhsc.searchMHS(tfSearch.getText())); 

        });/* 

        tbMHS.setOnMouseClicked(e->{ 

            MHSM m= tbMHS.getSelectionModel().getSelectedItem(); 

            AplikasJiFX5.pnKiri.tfID.setText(  

String.valueOf(m.getIdmhs())); 

            AplikasJiFX5.pnKiri.tfNIM.setText( m.getNim()); 

            AplikasJiFX5.pnKiri.tfNama.setText( m.getNama()); 

            AplikasJiFX5.pnKiri.tfKota.setText( m.getKota_asal());        

            AplikasJiFX5.pnKiri.tempId=m.getIdmhs();                    

        });  */     

        btEdit.setOnMouseClicked(e->{ 

            MHSM m= tbMHS.getSelectionModel().getSelectedItem(); 

            AplikasJiFX5.pnKiri.tfID.setText(  

String.valueOf(m.getIdmhs())); 

            AplikasJiFX5.pnKiri.tfNIM.setText( m.getNim()); 

            AplikasJiFX5.pnKiri.tfNama.setText( m.getNama()); 

            AplikasJiFX5.pnKiri.tfKota.setText( m.getKota_asal());        

            AplikasJiFX5.pnKiri.tempId=m.getIdmhs(); 

             

            AplikasJiFX5.pnKiri.aktif(true); 

 211 

 

99 

100 

101 

102 

103 

104 

105 

106 

107 

108 

109 

110 

111 

112 

113 

114 

115 

116 

117 

118 

119 

            AplikasJiFX5.pnKiri.tfID.setEditable(false); 

            AplikasJiFX5.pnKiri.blAdd=false; 

            AplikasJiFX5.pnKiri.tfNama.requestFocus(); 

        });    

         btDelete.setOnMouseClicked(e->{ 

             MHSM m= tbMHS.getSelectionModel().getSelectedItem();              

             // 

            Alert alert = new Alert(AlertType.CONFIRMATION); 

            alert.setTitle("Hapus Data"); 

            alert.setHeaderText("Yakin data dihapus?"); 

            alert.setContentText("data "+m.getNama()+" dihapus"); 

            Optional<ButtonType> option = alert.showAndWait(); 

            

            if (option.get() == ButtonType.OK){  

             mhsc.delete(String.valueOf(m.getIdmhs())); 

             this.tbMHS.setItems(mhsc.getAllMhs());             

            } 

             // 

         }); 

    } 

Kode 13.11 PanelKiri.java 

10 

package aplikasijfx5.view; 

 

import aplikasijfx5.controller.MHSC; 

import aplikasijfx5.model.MHSM; 

import javafx.geometry.Insets; 

import javafx.geometry.Pos; 

import javafx.scene.control.Button; 

import javafx.scene.control.Label; 

import javafx.scene.control.TextField; 

import javafx.scene.image.Image; 

 212 

 

11 

12 

13 

14 

15 

16 

17 

18 

19 

20 

21 

22 

23 

24 

25 

26 

27 

28 

29 

30 

31 

32 

33 

34 

35 

36 

37 

38 

39 

40 

41 

42 

import javafx.scene.image.ImageView; 

import javafx.scene.layout.GridPane; 

import javafx.scene.layout.VBox; 

 

public class PanelKiri extends VBox { 

    Label lbID = new Label("ID"); 

    Label lbNIM = new Label("NIM"); 

    Label lbNama = new Label("Nama"); 

    Label lbKota = new Label("Kota Asal"); 

    TextField tfID=new TextField(); 

    TextField tfNIM=new TextField(); 

    TextField tfNama=new TextField(); 

    TextField tfKota=new TextField(); 

    Button btUpdate ; 

    Button btCancel;     

    int tempId; 

    boolean blAdd; 

    MHSC mhsc = new MHSC(); 

    

    public PanelKiri(){ 

        GridPane gp = new GridPane(); 

        gp.add(lbID,0,0); 

        gp.add(lbNIM,0,1); 

        gp.add(lbNama,0,2); 

        gp.add(lbKota,0,3); 

        gp.add(tfID,1,0); 

        gp.add(tfNIM,1,1); 

        gp.add(tfNama,1,2); 

        gp.add(tfKota,1,3); 

        gp.setVgap(5);gp.setHgap(5);  

        tfID.setPromptText("ID MHS"); 

        tfNIM.setPromptText("NIM"); 

 213 

 

43 

44 

45 

46 

47 

48 

49 

50 

51 

52 

53 

54 

55 

56 

57 

58 

59 

60 

61 

62 

 

63 

64 

 

65 

66 

67 

68 

69 

70 

71 

72 

        tfNama.setPromptText("Nama"); 

        tfKota.setPromptText("Kota Asal");         

        lbID.setStyle("-fx-text-fill:white;"); 

        lbNIM.setStyle("-fx-text-fill:white;"); 

        lbNama.setStyle("-fx-text-fill:white;"); 

        lbKota.setStyle("-fx-text-fill:white;");         

        Image imgUpd = new Image("image/diskette.png");  

        Image imgCancel = new Image("image/rotation.png");  

        ImageView ivUpd = new ImageView(imgUpd); 

        ImageView ivCancel = new ImageView(imgCancel); 

   ivUpd.setFitWidth(70); 

   ivUpd.setFitWidth(30);         

 

        btUpdate = new Button("Update",ivUpd); 

        btUpdate.setPrefWidth(120); 

        btUpdate.setPrefHeight(40); 

        btCancel = new Button("Cancel",ivCancel);             

        btCancel.setPrefWidth(120); 

        btCancel.setPrefHeight(40); 

        //btUpdate.setStyle("-fx-background-color:green;-fx-text- 

fill:white;-fx-font-size:14;"); 

        //btCancel.setPrefWidth(100); 

        //btCancel.setStyle("-fx-background-color:green;-fx-text- 

fill:white;-fx-font-size:14;");     

         

        tfID.setEditable(false); 

        this.getChildren().addAll(gp,btUpdate,btCancel);         

        this.setSpacing(10); 

        this.setPadding(new Insets(10)); 

        this.setStyle("-fx-background-color:blue;"); 

        this.setAlignment(Pos.CENTER);     

        aktif(false); 

 214 

 

73 

74 

75 

76 

77 

78 

79 

80 

81 

82 

83 

84 

85 

86 

87 

88 

89 

90 

91 

92 

93 

94 

95 

96 

97 

98 

99 

100 

101 

102 

103 

         btCancel.setOnMouseClicked(e -> { 

             kosong(); 

             aktif(false); 

         }); 

        btUpdate.setOnMouseClicked(e -> { 

            if (!tfID.getText().equals("")){ 

                MHSM m = new MHSM(); 

                m.setIdmhs(Integer.parseInt(tfID.getText()) ); 

                m.setNim(tfNIM.getText()); 

                m.setNama(tfNama.getText()); 

                m.setKota_asal(tfKota.getText()); 

                if (blAdd==true) 

                    mhsc.insert(m); 

                else{ 

                    m.setIdmhs(tempId); 

                    mhsc.update(m); 

                }                 

                

AplikasJiFX5.pnKanan.tbMHS.setItems(mhsc.getAllMhs()); 

                kosong(); 

                aktif(false); 

            } 

                 

        });         

    } 

    public void kosong(){ 

        tfID.setText(""); 

        tfNIM.setText(""); 

        tfNama.setText(""); 

        tfKota.setText("");     

    } 

    public void aktif(boolean bl){ 

 215 

 

104 

105 

106 

107 

108 

109 

        tfID.setEditable(bl); 

        tfNIM.setEditable(bl); 

        tfNama.setEditable(bl); 

        tfKota.setEditable(bl); 

    } 

Package model 

Kode 13.12 MHSM.java 

10 

11 

 

12 

13 

14 

15 

16 

17 

18 

19 

20 

21 

22 

23 

package aplikasijfx5.model; 

 

public class MHSM { 

    private int idmhs; 

    private String nim; 

    private String nama; 

    private String kota_asal; 

 

    @Override 

    public String toString() { 

        return "MHSM{" + "idmhs=" + idmhs + ", nim=" + nim + ",  

nama=" + nama + ", kota_asal=" + kota_asal + '}'; 

    } 

    public MHSM(){ 

    } 

    public int getIdmhs() { 

        return idmhs; 

    } 

    public void setIdmhs(int idmhs) { 

        this.idmhs = idmhs; 

    } 

    public String getNim() { 

        return nim; 

    } 

 216 

 

24 

25 

26 

27 

28 

29 

30 

31 

32 

33 

34 

35 

36 

37 

38 

39 

    public void setNim(String nim) { 

        this.nim = nim; 

    } 

    public String getNama() { 

        return nama; 

    } 

    public void setNama(String nama) { 

        this.nama = nama; 

    } 

    public String getKota_asal() { 

        return kota_asal; 

    } 

    public void setKota_asal(String kota_asal) { 

        this.kota_asal = kota_asal; 

    } 

Package controller 

Kode 13.13 MHSC.java 

10 

11 

12 

13 

14 

package aplikasijfx5.controller; 

   

import aplikasijfx5.model.MHSM; 

import java.sql.ResultSet; 

import java.sql.SQLException; 

import java.sql.Statement; 

import java.util.ArrayList; 

import java.util.logging.Level; 

import java.util.logging.Logger; 

import javafx.collections.FXCollections; 

import javafx.collections.ObservableList; 

 

public class MHSC { 

      Statement st; 

 217 

 

15 

16 

17 

18 

 

 

19 

20 

21 

22 

23 

24 

25 

26 

27 

 

 

28 

29 

30 

31 

 

32 

33 

34 

35 

36 

37 

 

38 

39 

      public void insert(MHSM m){ 

          try { 

              st=MyConnection.getConnection().createStatement(); 

              String sql="insert into tbmhs  

(idmhs,nim,nama,kota_asal) values('"+m.getIdmhs()+"','"+m. 

getNim()+"','"+m.getNama()+"','"+m.getK ota_asal()+"') "; 

              st.executeUpdate(sql); 

          } catch (SQLException ex) { 

              

Logger.getLogger(MHSC.class.getName()).log(Level.SEVERE, null, ex); 

          }           

      } 

      public void update(MHSM m){ 

          try { 

              st=MyConnection.getConnection().createStatement(); 

              String sql="update tbmhs set  Nim =  

'"+m.getNim()+"',nama='"+m.getNama()+"',kota_asal='"+ 

m.getKota_asal()+"' where idmhs='"+m.getIdmhs()+"'"; 

              st.executeUpdate(sql); 

          } catch (SQLException ex) { 

            

Logger.getLogger(MHSC.class.getName()).log(Level.SEVERE,  

null, ex); 

          }           

      }       

      public void delete(String idMhs){ 

          try { 

              st=MyConnection.getConnection().createStatement(); 

              String sql = "delete from tbmhs where idMhs='"+ 

idMhs+"'"; 

              st.executeUpdate(sql); 

          } catch (SQLException ex) { 

              

 218 

 

40 

 

41 

42 

43 

44 

 

45 

46 

47 

48 

49 

50 

51 

52 

53 

54 

55 

56 

57 

58 

59 

60 

 

61 

62 

63 

64 

65 

 

66 

Logger.getLogger(MHSC.class.getName()).log(Level.SEVERE,  

null, ex); 

          }           

      }        

      public ObservableList<MHSM> getAllMhs(){ 

          ObservableList<MHSM> lmhs=  

FXCollections.observableArrayList(); 

          try { 

              st=MyConnection.getConnection().createStatement(); 

              String sql="select * from tbmhs";           

              ResultSet rs=st.executeQuery(sql); 

              rs.beforeFirst(); 

              while(rs.next()){ 

                  MHSM m = new MHSM(); 

                  m.setIdmhs(Integer.parseInt(rs.getString(1))); 

                  m.setNim(rs.getString(2)); 

                  m.setNama(rs.getString(3)); 

                  m.setKota_asal(rs.getString(4)); 

                  lmhs.add(m); 

                  System.out.println(m); 

              }  

          } catch (SQLException ex) { 

              

Logger.getLogger(MHSC.class.getName()).log(Level.SEVERE,  

null, ex); 

          }               

          return lmhs; 

      } 

      public ObservableList<MHSM> searchMHS(String nama){ 

          ObservableList<MHSM> lmhs=  

FXCollections.observableArrayList(); 

          try { 

 219 

 

67 

68 

 

69 

70 

71 

72 

73 

74 

75 

76 

77 

78 

79 

80 

81 

 

 

82 

83 

84 

85 

              st=MyConnection.getConnection().createStatement(); 

              String sql="select * from tbmhs where nama  

like'%"+nama+"%'";           

              ResultSet rs=st.executeQuery(sql); 

              rs.beforeFirst(); 

              while(rs.next()){ 

                  MHSM m = new MHSM(); 

                  m.setIdmhs(Integer.parseInt(rs.getString(1))); 

                  m.setNim(rs.getString(2)); 

                  m.setNama(rs.getString(3)); 

                  m.setKota_asal(rs.getString(4)); 

                  lmhs.add(m); 

                  System.out.println(m); 

              }  

          } catch (SQLException ex) { 

              

Logger.getLogger(MHSC.class.getName()).log(Level.SEVERE,  

null, ex); 

          }               

          return lmhs; 

      }       

Kode 13.14 MyConnection.java 

package aplikasijfx5.controller; 

import java.sql.*; 

import java.util.logging.Level; 

import java.util.logging.Logger; 

 

public class MyConnection { 

    private static Connection con; 

    private MyConnection(){ 

 220 

 

10 

11 

12 

13 

 

14 

15 

16 

17 

18 

19 

20 

21 

22 

23 

24 

25 

    public static Connection getConnection(){ 

        if (con==null){ 

            try{               

                con =  

DriverManager.getConnection("jdbc:mysql://localhost/javadb","root",

""); 

                //System.out.println("KOneksi berhasil..."); 

            }catch(SQLException se){ 

                se.printStackTrace(); 

            }         

        } 

        return con; 

    } 

    public static void disconnect(){ 

        if (con!=null) 

            con=null; 

    } 

 

 221 

 

13.6 SQLLite 

SQLite adalah database-engine  SQL  transaksional yang berdiri sendiri. dan merupakan 

database  yang dalam penggunaannya  tidak memerlukan konfigurasi sehingga berbeda 

dengan database lain . 

SQLite tidak memerlukan proses server atau sistem yang terpisah untuk beroperasi 

(serverless). 

SQLite tidak memerlukan konfigurasi dalam penggunaannya, yang artinya tidak diperlukan 

pengaturan atau administrasi terhadap database. Database SQLite lengkap disimpan dalam 

sebuah file disk yang memiliki format lintas platform. SQLite sangat kecil dan ringan, 

dengan ukuran kurang dari 400KB atau kurang dari 250KB dengan fitur opsional 

dihilangkan. 

SQLite mandiri, yang berarti tidak ada ketergantungan eksternal dengan aplikasi dan sistem 

lainnya. 

Transaksi SQLite sepenuhnya sesuai  standar ACID(Atomicity, Consistency, Isolation, 

Durability), yang memungkinkan akses yang aman dari berbagai proses atau threads. SQLite 

mendukung sebagian besar fitur bahasa query dalam standar SQL92 (SQL2).SQLite ditulis 

dalam ANSI-C dan menyediakan API yang sederhana dan mudah digunakan.SQLite tersedia 

di UNIX (Linux, Mac OS-X, Android, iOS) dan Windows (Win32, WinCE, WinRT). 

 

Tabel 13.1 Beberapa fitur yang tidak didukung dari SQL92 di SQLite 

No Fitur yg tidak didukung Keterangan 

1 RIGHT OUTER JOIN Hanya mendukung LEFT OUTER JOIN   

2 FULL OUTER JOIN Hanya LEFT OUTER JOIN yg didukung 

3 ALTER TABLE RENAME TABLE dan ADD COLUMN pada  the ALTER 

TABLE didukung 

DROP COLUMN, ALTER COLUMN, ADD 

CONSTRAINT tidak didukung. 

4 Trigger  FOR EACH ROW triggers didukung 

Tapi FOR EACH STATEMENT triggers tidak didukung 

 222 

 

5 View VIEW dalam SQLite bersifat read-only 

Tidak bisa menggunakan statemtnt  DELETE, INSERT, or 

UPDATE pada view. 

6 GRANT and REVOKE Satu-satunya izin akses yang dapat diterapkan adalah izin 

akses file normal dari sistem operasi yang mendasarinya. 

 

 

Kode 13.15 Contoh koneksi sekaligus membuat database baru “testdb” 

 

     Connection c ;       

     Statement stmt; 

      try { 

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

         c = DriverManager.getConnection("jdbc:sqlite:test.db"); 

         System.out.println("Opened database successfully"); 

      } catch ( ClassNotFoundException | SQLException e ) { 

         System.err.println( e.getClass().getName() + ": " +  

e.getMessage() ); 

      } 

 

Kode 13.16 Contoh membuat tabel baru pada SQLLite 

 

 

 Connection c ;       

 Statement stmt; 

  try { 

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

         c = DriverManager.getConnection("jdbc:sqlite:test.db"); 

         System.out.println("Opened database successfully"); 

         stmt = c.createStatement(); 

         String sql = "CREATE TABLE tbmhs " + 

                        "(idmhs INT PRIMARY KEY NOT NULL," + 

                        " nim TEXT  NOT NULL, " +  

 223 

 

 

 

10 

11 

12 

13 

14 

 

15 

                        " nama TEXT NOT NULL, " +  

                        " kota_asalCHAR(50))";  

         stmt.executeUpdate(sql); 

         stmt.close(); 

         c.close(); 

          

      } catch ( ClassNotFoundException | SQLException e ) { 

         System.err.println( e.getClass().getName() + ": " +  

e.getMessage() ); 

      } 

 

Kode 13.17 Contoh menambahkan data pada tabel 

 

10 

 

11 

12 

 

13 

14 

15 

16 

17 

    Connection c = null;       

     Statement stmt = null; 

      try { 

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

         c = DriverManager.getConnection("jdbc:sqlite:test.db"); 

         System.out.println("Opened database successfully"); 

         stmt = c.createStatement(); 

         String sql = "insert into tbmhs(idmhs,nim,nama,kota_asal)  

values (1,'A11.2017.00001','AGUS','SMG') "; 

         stmt.executeUpdate(sql); 

         sql = "insert into tbmhs(idmhs,nim,nama,kota_asal) values  

(2,'A11.2017.00002','BUDI','SOLO) "; 

          stmt.executeUpdate(sql); 

         sql = "insert into tbmhs(idmhs,nim,nama,kota_asal) values  

(3,'A11.2017.00003','WATI',KUDUS) "; 

         stmt.executeUpdate(sql); 

           

         stmt.close(); 

         c.commit(); 

 224 

 

18 

19 

 

20 

         c.close(); 

         } catch ( Exception e ) { 

         System.err.println( e.getClass().getName() + ": " +  

e.getMessage() ); 

      } 

 

Kode 13.18 Contoh memproses resultSet 

10 

11 

12 

13 

14 

15 

16 

17 

18 

19 

Connection c ;       

Statement st; 

ResultSet rs; 

try { 

   c = DriverManager.getConnection("jdbc:sqlite:test.db"); 

   String sql="select * from tbmhs"; 

   st = c.createStatement(); 

   rs=st.executeQuery(sql); 

   String idmhs,nim,nama,kota_asal; 

   while(rs.next()){ 

       idmhs= rs.getString(1); 

       nim= rs.getString(2); 

       nama= rs.getString(3); 

       kota-asal= rs.getString(4); 

       System.out.println(idmhs+”  ”+nim+” ”+nama); 

      }  

    } catch (Exception ex) { 

          System.err.println(ex); 

    }               

 

 

 

 

 225 

 

Contoh Aplikasi Lengkap dengan database SQLLite: 

Gambar 13.4 Menambahkan driver sqlite-jdbc-3.27.2.1.jar  pada library NetBeanIDE 

Kode 13.19 JFXSQLLite1.java 

10 

11 

12 

package jfxsqllite1; 

 

import java.sql.Connection; 

import java.sql.DriverManager; 

import java.sql.ResultSet; 

import java.sql.SQLException; 

import java.sql.Statement; 

import java.util.logging.Level; 

import java.util.logging.Logger; 

import javafx.application.Application; 

import javafx.collections.FXCollections; 

import javafx.collections.ObservableList; 

 226 

 

13 

14 

15 

16 

17 

18 

19 

20 

21 

22 

23 

24 

25 

26 

27 

28 

29 

30 

31 

32 

33 

34 

35 

36 

37 

38 

39 

40 

41 

42 

43 

44 

import javafx.event.ActionEvent; 

import javafx.event.EventHandler; 

import javafx.scene.Scene; 

import javafx.scene.control.Button; 

import javafx.scene.control.TableColumn; 

import javafx.scene.control.TableView; 

import javafx.scene.control.cell.PropertyValueFactory; 

import javafx.scene.layout.HBox; 

import javafx.scene.layout.StackPane; 

import javafx.scene.layout.VBox; 

import javafx.stage.Stage; 

 

public class JFXSQLLite1 extends Application { 

     TableView<MHS> tbMHS = new TableView(); 

    @Override 

    public void start(Stage primaryStage) { 

                 

        Button btnDB = new Button("createDB"); 

        Button btnTB = new Button("createTable"); 

        Button btnIns = new Button("InserData");         

        btnDB.setOnAction(e->{ 

            createDB(); 

        }); 

        btnIns.setOnAction(e->{ 

            insertData(); 

        });         

        btnTB.setOnAction(e->{ 

            createTabel(); 

        });             

        HBox hb = new HBox(); 

        hb.getChildren().addAll(btnDB,btnTB,btnIns); 

        VBox vb = new VBox(); 

 227 

 

45 

46 

47 

48 

49 

50 

51 

52 

53 

54 

55 

56 

57 

58 

59 

60 

61 

62 

63 

64 

65 

66 

 

67 

68 

69 

70 

71 

72 

73 

74 

75 

        vb.getChildren().addAll(hb,getTbl()); 

        Scene scene = new Scene(vb, 300, 250); 

        primaryStage.setTitle("Hello World!"); 

        primaryStage.setScene(scene); 

        primaryStage.show(); 

    } 

     

    public static void main(String[] args) { 

        launch(args); 

    } 

 

    void createDB(){ 

     Connection c ;       

     Statement stmt; 

      try { 

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

         c = DriverManager.getConnection("jdbc:sqlite:test.db"); 

         System.out.println("Opened database successfully"); 

         c.close(); 

          

      } catch ( ClassNotFoundException | SQLException e ) { 

         System.err.println( e.getClass().getName() + ": " +  

e.getMessage() ); 

         //System.exit(0); 

      } 

      System.out.println("Opened database successfully");    

    } 

 

    void createTabel(){ 

     Connection c = null;       

     Statement stmt = null; 

      try { 

 228 

 

76 

77 

78 

79 

80 

 

 

 

 

81 

82 

83 

84 

85 

86 

 

87 

88 

89 

90 

91 

92 

93 

94 

95 

96 

97 

98 

99 

100 

 

101 

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

         c = DriverManager.getConnection("jdbc:sqlite:test.db"); 

         System.out.println("Opened database successfully"); 

         stmt = c.createStatement(); 

         String sql = "CREATE TABLE tbmhs " + 

                        "(idmhs INT PRIMARY KEY NOT NULL," + 

                        " nim TEXT, " +  

                        " nama TEXT, " +  

                        " kota_asal TEXT )";  

         stmt.executeUpdate(sql); 

         stmt.close(); 

         c.close(); 

          

      } catch ( Exception e ) { 

         System.err.println( e.getClass().getName() + ": " +  

e.getMessage() ); 

         //System.exit(0); 

      } 

      System.out.println("Create  table successfully");    

    }   

 

    void insertData(){ 

     Connection c = null;       

     Statement stmt = null; 

      try { 

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

         c = DriverManager.getConnection("jdbc:sqlite:test.db"); 

         System.out.println("Opened database successfully"); 

         stmt = c.createStatement(); 

         String sql = "insert into tbmhs(idmhs,nim,nama,kota_asal)  

values (1,'A11.2017.00001','AGUS','SEMARANG') "; 

         stmt.executeUpdate(sql); 

 229 

 

102 

 

103 

104 

 

105 

106 

107 

108 

109 

110 

111 

112 

 

113 

114 

115 

116 

117 

118 

119 

120 

121 

122 

 

123 

124 

125 

126 

127 

128 

129 

         sql = "insert into tbmhs(idmhs,nim,nama,kota_asal) values 

(2,'A11.2017.00002','BUDI','SEMARANG') "; 

         stmt.executeUpdate(sql); 

         sql = "insert into tbmhs(idmhs,nim,nama,kota_asal) values  

(3,'A11.2017.00003','WATI','SEMARANG') "; 

         stmt.executeUpdate(sql); 

           

         stmt.close(); 

         c.commit(); 

         c.close(); 

          

      } catch ( Exception e ) { 

         System.err.println( e.getClass().getName() + ": " +  

e.getMessage() ); 

      } 

      System.out.println("insert data successfully");    

    }  

 

     @SuppressWarnings("CallToPrintStackTrace") 

    public ObservableList<MHS> getAllMhs(){ 

          Connection c ;       

          Statement st; 

          ResultSet rs; 

          ObservableList<MHS> lmhs=  

FXCollections.observableArrayList(); 

          try { 

              c = DriverManager.getConnection("jdbc:sqlite:test.db"); 

              String sql="select * from tbmhs"; 

              st = c.createStatement(); 

              rs=st.executeQuery(sql); 

              while(rs.next()){ 

                  MHS m = new MHS(); 

 230 

 

130 

131 

132 

133 

134 

135 

136 

137 

138 

139 

140 

141 

142 

143 

144 

145 

146 

147 

148 

 

149 

150 

 

151 

 

152 

 

153 

 

154 

155 

156 

                  m.setIdmhs(Integer.parseInt(rs.getString(1))); 

                  m.setNim(rs.getString(2)); 

                  m.setNama(rs.getString(3)); 

                  m.setKota_asal(rs.getString(4)); 

                  lmhs.add(m); 

                  System.out.println(m); 

              }  

          } catch (Exception ex) { 

              System.err.println(ex); 

          }               

          return lmhs; 

      }    

    public HBox getTbl(){ 

        HBox hb = new HBox(); 

         

        TableColumn<MHS,Integer> colIdmhs= new TableColumn("ID"); 

        TableColumn<MHS,String> colNim=new TableColumn("NIM"); 

        TableColumn<MHS,String> colNama=new TableColumn("Nama"); 

        TableColumn<MHS,String> colKota_asal=new TableColumn("Kota  

Asal"); 

         

        colIdmhs.setCellValueFactory(new  

PropertyValueFactory<>("idmhs")); 

        colNim.setCellValueFactory(new  

PropertyValueFactory<>("nim")); 

        colNama.setCellValueFactory(new  

PropertyValueFactory<>("nama")); 

        colKota_asal.setCellValueFactory(new  

PropertyValueFactory<>("kota_asal")); 

      

colIdmhs.prefWidthProperty().bind(tbMHS.widthProperty().divide(4)); 

        

colNim.prefWidthProperty().bind(tbMHS.widthProperty().divide(4)); 

 231 

 

157 

158 

159 

 

160 

161 

162 

163 

164 

165 

166 

        

colNama.prefWidthProperty().bind(tbMHS.widthProperty().divide(4)); 

        

colKota_asal.prefWidthProperty().bind(tbMHS.widthProperty().divide(4)

); 

         

        

tbMHS.getColumns().addAll(colIdmhs,colNim,colNama,colKota_asal); 

        tbMHS.setItems(getAllMhs());    

        hb.getChildren().add(tbMHS); 

        return hb; 

    }  

Kode 13.20 MHS.java 

10 

 

11 

12 

13 

14 

15 

16 

17 

18 

package jfxsqllite1; 

public class MHS { 

 private int idmhs; 

    private String nim; 

    private String nama; 

    private String kota_asal; 

 

    @Override 

    public String toString() { 

        return "MHSM{" + "idmhs=" + idmhs + ", nim=" + nim + ",  

nama=" + nama + ", kota_asal=" + kota_asal + '}'; 

    } 

    public MHS(){ 

    } 

    public int getIdmhs() { 

        return idmhs; 

    } 

    public void setIdmhs(int idmhs) { 

        this.idmhs = idmhs; 

 232 

 

19 

20 

21 

22 

23 

24 

25 

26 

27 

28 

29 

30 

31 

32 

33 

34 

35 

36 

37 

38 

    } 

    public String getNim() { 

        return nim; 

    } 

    public void setNim(String nim) { 

        this.nim = nim; 

    } 

    public String getNama() { 

        return nama; 

    } 

    public void setNama(String nama) { 

        this.nama = nama; 

    } 

    public String getKota_asal() { 

        return kota_asal; 

    } 

    public void setKota_asal(String kota_asal) { 

        this.kota_asal = kota_asal; 

    }        

Output 

 

 

 

 233 

 

BAB 14 GUI DAN MVC CRUD MENGGUNAKAN NETBEANS 

Pada bab-bab sebelumnya, untuk membuat program Java kita menggunakan Notepad. 

Selain itu kita juga bisa menggunakan text editor yang lain seperti Wordpad, Sublime, Visual 

Studio Code, atau yang lain. Untuk compile dan run program menggunakan command 

window. Namun, pada bab ini kita bisa menggunakan Java development tools berupa 

Integrated Development Evironment (IDE) seperti Netbeans atau Eclipse. IDE tersebut dapat 

digunakan untuk membuat, mengedit, compile, run, dan debugging pemrograman Java 

dengan cepat dengan satu tampilan. Sehingga kita dapat meningkatkan produktivitas kita 

dalam pemrograman. Berikut cara membuat pemrograman Graphical User Interface (GUI) 

Java menggunakan IDE Netbeans.  

14.1 Persiapan menggunakan Netbeans 

Hal yang pertama diperlukan adalah instalasi, kunjungi website ini Download 

Netbeans https://netbeans.org/downloads/8.0.2/ pilih untuk Desktop dan Install. Komponen-

komponen GUI menggunakan Java Swing yang terdiri dari Swing Containers, Swing 

Controls, Swing Menus,dan Swing Windows. Di dalam setiap komponen swing ada  

berbagai macam bentuk seperti pada gambar 14.1. 

 

 

 

 

 

 

 

 

 

Gambar 14.1 Komponen dari Java Swing 

 234 

 

14.2 Java Form 

Setelah membuka Netbeans, mari kita membuat Project untuk program kita. Ikuti 

langkah-langkah berikut dengan seksama: 

1. Klik File – New Project – pilih Java – Java Application – Next – ketik judul project 

dengan “MenuForm” – terakhir klik Finish. 

Gambar 14.2 Membuat project MenuForm 

2. Buat JFrame Form dengan nama “MainMenuForm”. Tambahkan komponen Button, 

Label, dan textfield. F2 untuk mengganti keterangan text pada Button/Label/Textfield. 

 

 

 

 

Gambar 14.3 Membuat JFrame Form MainMenuForm 

 235 

 

3. Rubah nama variabel pada textfield. Nama variabel digunakan sebagai perwakilan dari 

komponen UI tersebut untuk dapat di program. Cara 1: klik pada textfield  lihat 

property. Cara 2: klik kanan pada textfield  Change Variable Name. Beri nama variabel 

textfield denga  nama “txtNama”. Selain itu untuk label output “Nama saya ...” ganti 

nama variabel menjadi “txtOutput”.  Button cetak ganti variabelnya menjadi “btnCetak”. 

 

 

 

 

 

Gambar 14.4 Rubah nama variabel 

4. Netbeans menyediakan Event-Listener Otomatis dengan cara double klik pada btnCetak. 

Tambahkan kode seperti pada gambar berikut: 

Gambar 14.5 Event-Listener Otomatis 

5. Run, jadikan MainMenuForm sebagai Main Form. 

 

 

 

 

Gambar 14.6 Hasil output 

6. Tambahkan 1 button dengan nama variabel btnPindah dimana 1 button tersebut 

digunakan sebagai navigasi untuk berpindah form. Setelah itu buat Form baru Jframe 

Form dengan nama “CreditsForm”. Di dalamnya ada  txtNama dan btnBack. 

txtNama 

txtOutput btnCetak 

 236 

 

  

 

 

 

 

 

Gambar 14.7 Tambah button txtPindah dan JFrame CreditsForm 

7. Mari kita kirimkan teks antar form. Buat Method di dalam form MainMenuForm dengan 

nama GetNama(). 

 

 

 

 

Gambar 14.8 Buat method GetNama() da isi btnPindah di form MainMenuForm 

8. Buka CreditsForm, tambahkan konstruktor baru dengan parameter txtNama. Buat 

variabel property untuk menampung txtOutput dari Form MainMenuForm. 

 

 

 

 

Gambar 14.9 Buat konstruktor baru di Form CreditsForm 

9. Masih di dalam Form CreditsForm, klik kanan pada Form dan tambahkan event seperti 

pada gambar 14.10. Tambahkan didalam event listener windowActivated kode: 

txtNama.setText(txtNamaDariFormLain). Tambahkan event pada btnBack (double 

klik pada btnBack) seperti pada gambar 14.10. Run dan lihat apa yang terjadi! 

btnPindah txtNama 

btnBack 

GetNama() 

 237 

 

 

 

 

 

 

 

 

 

Gambar 14.10 Edit beberapa tempat di Form CreditsForm 

14.3 MVC CRUD menggunakan Netbeans 

Pada bab 10.6 ada  konsep tentang Model-View-Controller (MVC). Dimana MVC 

adalah sebuah metode untuk membuat sebuah aplikasi dengan memisahkan data (Model) dari 

tampilan (View) dan cara bagaimana memprosesnya (Controller). Mari kita implementasikan 

bersama. 

1. Persiapan database dengan mendownload dan install xampp 

https://www.apachefriends.org/index.html Aktifkan Apache local server dan mysql. Buat 

database dengan nama db_crud. Buat tabel database dengan nama tblmahasiswa yang 

berisi id int(11), nim varchar(20), nama varchar(30), jk varchar(15), dan alamat text. 

2. Buat Project dengan nama “CRUD_MVC”. Uncheck create Main Class. 

 

 

 

 

 

Gambar 14.11 Buat Project dengan nama CRUD_MVC 

 238 

 

3. Tambahkan Library  Mysql dengan cara klik kanan pada Libraries  Pilih Add Library 

 Cari MySQL JDBC Driver  Add Library 

 

 

 

 

 

 

 

Gambar 14.12 Tambahkan Library  Mysql 

4. Siapkan Package/ Folder untuk MVC. Klik kanan pada Source Packages  New  Java 

Packages. Buat package dengan nama “mvc.Controller”, ”mvc.DAO”, 

”mvc.DAOInterface”, ”mvc.Koneksi”, ”mvc.Model”, dan “mvc.View”. 

 

 

 

 

 

 

Gambar 14.13 Menyiapkan package 

5. Buat Class Koneksi didalam package mvc.Koneksi (Klik kanan pada mvc.Koneksi  new 

 Java Class 

 

 239 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Gambar 14.14 Class Koneksi 

6. Buat Class Mahasiswa didalam package mvc.Model. Buatlah property private Integer id,     

private String nim, private String nama, private String jk, dan private String alamat. 

Setelah itu, blok semua kode diatas  klik kanan  Refactor  Encapsulate Fields  

Refactor. Maka akan membuat Getter Setter otomatis. 

 

 

 

 

 

Gambar 14.15 Getter Setter otomatis 

 240 

 

7. Buat Class TabelModelMahasiswa.java didalam package mvc.Model. 

 

 

 

 

 

 

 

 

 

 

 

 

 

Gambar 14.16 Class TabelModelMahasiswa.java 

8. Buat Class interface Imahasiswa.java didalam package mvc.DAOInterface. 

 

 

 

 

 

 

 

Gambar 14.17 Class interface Imahasiswa.java 

 241 

 

9. Buat Class DAOMahasiswa.java didalam package mvc.DAO yang berisi CRUD. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 242 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 243 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Gambar 14.18 Class DAOMahasiswa.java 

10. Buat Form dengan JFrame Form dialam package mvc.View dengan nama 

“FormMahasiswa”. Khusus untuk jkel combo box  properties  Model diganti L,P. 

 

 

 244 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Gambar 14.19 GUI dan aturan nama variabel pada FormMahasiswa 

• Tambahkan kode sebagai properti: 

• ControllerMahasiswa cbt; 

• Tambahkan kode didalam Konstruktor FormMahasiswa setelah pemanggilan 

initComponents(): 

• cbt = new ControllerMahasiswa(this); 

• cbt.isiTable(); 

• Tambahkan kode Simpan dengan double klik button Simpan: 

• cbt.insert(); 

• cbt.isiTable(); 

 245 

 

• cbt.reset(); 

• Tambahkan kode Ubah dengan double klik button Ubah: 

• cbt.update(); 

• cbt.isiTable(); 

• cbt.reset(); 

• Tambahkan kode Hapus dengan double klik button Hapus: 

• cbt.delete(); 

• cbt.isiTable(); 

• cbt.reset(); 

• Tambahkan kode Batal dengan double klik button Batal: 

• cbt.reset(); 

• Tambahkan kode Cari dengan double klik button Cari : 

• cbt.carinama(); 

• Tambahkan beberapa method berikut , jangan lupa import juga 

 

 

 

 

 

 

 

 

 

Gambar 14.20 Tambahan beberapa method di View  

 246 

 

11. Buat Class ControllerMahasiswa.java didalam package mvc.Controller 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 247 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 248 

 

 

 

 

 

Gambar 14.21 Class ControllerMahasiswa.java 

12. Run di FormMahasiswa sebagai Main Class. 

14.4 Deploy Aplikasi 

Deploy adalah proses untuk menjadikan program bisa digunakan user. Mari ikuti 

langkah-langkah berikut ini: 

1. Install Inno Setup dengan mendownload di http://www.jrsoftware.org/ Pilih versi yang 

terbaru dan bukan Beta. Install lalu tambahkan ke Path, System Environment variabel: 

C:\Program Files (x86)\Inno Setup 5 (langkah ini seperti setting javac). Cek di cmd: 

cmd.exe /c cmd.exe /k iscc.exe 

2. Aktifkan Native Packaging pada Project.. Klik kanan pada project misal: CRUD_MVC  

Pilih dan klik Properties. Cari Deployment  centang enable native pakaging  oke 

 

 

 

 

 

 

 

 

Gambar 14.22 Proses deployment 

 249 

 

3. Klik kanan pada project  Package as  EXE Installer. Tunggu beberapa saat karena 

prosesnya cukup lama. 

 

 

 

 

 

 

 

Gambar 14.23 Packaging (exe) 

 

4. Installer (.exe) saved to: 

C:\Users\ASUS\Documents\NetBeansProjects\CRUD_MVC\dist\bundles 

Gambar 14.24 Tempat exe tersimpan 

14.5 Kesimpulan 

Kita bisa menggunakan Java development tools berupa Integrated Development 

Evironment (IDE) seperti Netbeans atau Eclipse untuk membuat, mengedit, compile, run, dan 

debugging pemrograman Java dengan cepat dengan satu tampilan. Sehingga kita dapat 

meningkatkan produktivitas kita dalam pemrograman. Komponen-komponen GUI 

menggunakan Java Swing yang terdiri dari Swing Containers, Swing Controls, Swing Menus, 

dan Swing Windows. 

 250