Anda di halaman 1dari 23

Percobaan 1 Main.java package jdbcPBO; import java.sql.ResultSet; import java.sql.SQLException; import java.util.logging.Level; import java.util.logging.

Logger; public class Main { public static void main(String[] args) { appConnection conn = new appConnection ("jdbc:mysql://localhost:3306/pbo"); conn.dmlQuery("insert into mahasiswa values ('nama 1', 'NIM 1')"); conn.dmlQuery("insert into mahasiswa values ('nama 2', 'NIM 2')"); conn.dmlQuery("insert into mahasiswa values ('nama 3', 'NIM 3')"); ResultSet rs = conn.query("Select * from mahasiswa"); show(rs); System.out.println("after delete"); conn.dmlQuery("delete from mahasiswa where nim='nim 2'"); rs = conn.query("Select * from mahasiswa"); show(rs); }

private static void show(ResultSet rs) { try { while (rs.next()){ System.out.println(rs.getString(1)+"||"+rs.getString(2)); } } catch (SQLException ex) {} } }

appConnection.java package jdbcPBO; 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; public class appConnection { Connection conn; public appConnection(String conn){

try { this.conn = DriverManager.getConnection(conn, "root",""); System.out.println("Connected"); } catch (SQLException ex){ System.out.println("Not Connected"); } } public ResultSet query(String sql){ ResultSet rs = null; try { Statement stmt = conn.createStatement(); rs = stmt.executeQuery(sql); } catch (SQLException ex) {} return rs; } public void dmlQuery(String sql){ try { Statement stmt = conn.createStatement(); stmt.executeUpdate(sql); }

catch (SQLException ex) {} } }

Pertanyaan : 1. Fungsi atribut conn pada class appConnection yaitu untuk membuat koneksi dengan database. 2. Fungsi method query pada class appConnection yaitu untuk menjalankan query select. 3. Fungsi method dmlQuery pada class appConnection yaitu untuk menjalankan perintah insert, update dan delete. 4. Maksud rs.next() pada class Main adalah untuk melihat apakah masih ada baris berikutnya dari baris rs sekaligus pindah pada baris berikutnya dan seterusnya. 5. Maksud rs.getString(1) pada class Main adalah mengambil data string dari kolom 1 hasil query (kolom paling kiri). 6. Menambahkan kode pada class Main untuk merubah data nim 1 menjadi nim 0. Main.java package jdbcPBO; import java.sql.ResultSet; import java.sql.SQLException; import java.util.logging.Level; import java.util.logging.Logger; public class Main { public static void main(String[] args) { appConnection conn = new appConnection("jdbc:mysql://localhost:3306/pbo"); ResultSet rs = conn.query("Select * from mahasiswa");

System.out.println("after update"); conn.dmlQuery("update mahasiswa set nim='NIM 0' where nim='nim 1"); rs = conn.query("Select * from mahasiswa"); show(rs); } private static void show(ResultSet rs) { try { while (rs.next()){ System.out.println(rs.getString(1)+"||"+rs.getString(2)); } } catch (SQLException ex) {} } } Compile program :

Running program :

Menambahkan sintak update update nama tabel set nama field=data baru where nama field=data lama pada conn.dmlQuery.

Kesimpulan : a. JDBC (Java Database Connectivity) adalah API (Application Programming Interface) java yang membatu aplikasi java untuk mengeksekusi SQL statement, sehingga dapat mengakses database dalam format tabular dari

kode-kode java menggunakan sekumpulan interface standard dan class-class yang tertulis dalam bahasa java. b. Cara koneksi : Mengaktifkan driver JDBC Class.forName(com.mysql.jdbc.Driver); Atau dengan Class.forName(jdbc.Driver); Membuat koneksi Connection conn = DriverManager.getConnection(conn,root,pwd); conn adalah variable bertipe connection root adalah user untuk koneksi ke database pwd adalah password untuk masuk ke database c. Cara query select untuk melakukan proses select perlu mengimport class ResultSet import java.sql.ResultSet; kemudian buat Statement, dan ResultSet Statement stmt = conn.createStatemet(); ResultSet rs =conn.query(Select * from mahasiswa); Perintah Select digunakan untuk menampilkan isi dari suatu tabel * digunakan untuk menampilkan seluruh field dari tabel mahasiswa adalah tabel yang isinya akan ditampilkan d. Cara query insert, updata, delete untuk melakukan proses insert, update, delete perlu mengimport class SQLException dan Statement import java.sql.SQLException; import java.sql.Statement; kemuadia membuat method yang dapat mengakses query insert, update, dan delete. dmlQuery() yang di dalam method tersebut terdapat : Statement stmt = conn.createStatemet(); stmt.executeUpdate(sql);

query insert : conn.dmlQuery(insert into mahasiswa values (nama 1, nim 1)); query update : conn.dmlQuery(update mahasiswa set nim=nim 0 where nim=nim 1); query delete : conn.dmlQuery("delete from mahasiswa where nim='nim 2'"); e. Cara menutup koneksi untuk menutup koneksi dengan database harus didefinisikan secara eksplisit dengan menggunakan : connection.close();

Percobaan 2 : package praktikum6_2; import org.jdesktop.application.Action; import org.jdesktop.application.ResourceMap; import org.jdesktop.application.SingleFrameApplication; import org.jdesktop.application.FrameView; import org.jdesktop.application.TaskMonitor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Timer; import javax.swing.Icon; import javax.swing.JDialog; import javax.swing.JFrame; public class Praktikum6_2View extends FrameView { public Praktikum6_2View(SingleFrameApplication app) { super(app); initComponents(); ResourceMap resourceMap = getResourceMap(); int messageTimeout = resourceMap.getInteger("StatusBar.messageTimeout"); messageTimer = new Timer(messageTimeout, new ActionListener() { public void actionPerformed(ActionEvent e) { statusMessageLabel.setText(""); } }); messageTimer.setRepeats(false); int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate"); for (int i = 0; i < busyIcons.length; i++) { busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]");

} busyIconTimer = new Timer(busyAnimationRate, new ActionListener() { public void actionPerformed(ActionEvent e) { busyIconIndex = (busyIconIndex + 1) % busyIcons.length; statusAnimationLabel.setIcon(busyIcons[busyIconIndex]); } }); idleIcon = resourceMap.getIcon("StatusBar.idleIcon"); statusAnimationLabel.setIcon(idleIcon); progressBar.setVisible(false); TaskMonitor taskMonitor = new TaskMonitor(getApplication().getContext()); taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() { public void propertyChange(java.beans.PropertyChangeEvent evt) { String propertyName = evt.getPropertyName(); if ("started".equals(propertyName)) { if (!busyIconTimer.isRunning()) { statusAnimationLabel.setIcon(busyIcons[0]); busyIconIndex = 0; busyIconTimer.start(); } progressBar.setVisible(true); progressBar.setIndeterminate(true); } else if ("done".equals(propertyName)) { busyIconTimer.stop(); statusAnimationLabel.setIcon(idleIcon); progressBar.setVisible(false); progressBar.setValue(0); } else if ("message".equals(propertyName)) { String text = (String)(evt.getNewValue());

statusMessageLabel.setText((text == null) ? "" : text); messageTimer.restart(); } else if ("progress".equals(propertyName)) { int value = (Integer)(evt.getNewValue()); progressBar.setVisible(true); progressBar.setIndeterminate(false); progressBar.setValue(value); } } }); } @Action public void showAboutBox() { if (aboutBox == null) { JFrame mainFrame = Praktikum6_2App.getApplication().getMainFrame(); aboutBox = new Praktikum6_2AboutBox(mainFrame); aboutBox.setLocationRelativeTo(mainFrame); } Praktikum6_2App.getApplication().show(aboutBox); } @SuppressWarnings("unchecked") private void initComponents() { mainPanel = new javax.swing.JPanel(); jTextField1 = new javax.swing.JTextField(); jLabel1 = new javax.swing.JLabel(); jButton1 = new javax.swing.JButton(); menuBar = new javax.swing.JMenuBar(); javax.swing.JMenu fileMenu = new javax.swing.JMenu(); javax.swing.JMenuItem exitMenuItem = new javax.swing.JMenuItem(); javax.swing.JMenu helpMenu = new javax.swing.JMenu();

javax.swing.JMenuItem aboutMenuItem = new javax.swing.JMenuItem(); statusPanel = new javax.swing.JPanel(); javax.swing.JSeparator statusPanelSeparator = new javax.swing.JSeparator(); statusMessageLabel = new javax.swing.JLabel(); statusAnimationLabel = new javax.swing.JLabel(); progressBar = new javax.swing.JProgressBar(); mainPanel.setName("mainPanel"); org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(praktikum6_2.Praktikum6_ 2App.class).getContext().getResourceMap(Praktikum6_2View.class); jTextField1.setText(resourceMap.getString("jTextField1.text")); jTextField1.setName("jTextField1"); jLabel1.setFont(resourceMap.getFont("jLabel1.font")); jLabel1.setText(resourceMap.getString("jLabel1.text")); jLabel1.setName("jLabel1"); jButton1.setText(resourceMap.getString("jButton1.text")); jButton1.setName("jButton1"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel); mainPanel.setLayout(mainPanelLayout); mainPanelLayout.setHorizontalGroup( mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.L EADING) .addGroup(mainPanelLayout.createSequentialGroup() .addContainerGap()

.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout. Alignment.LEADING) .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 380, Short.MAX_VALUE) .addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 380, Short.MAX_VALUE) .addComponent(jButton1)) .addContainerGap()) ); mainPanelLayout.setVerticalGroup( mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.L EADING) .addGroup(mainPanelLayout.createSequentialGroup() .addContainerGap() .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(27, 27, 27) .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 77, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 85, Short.MAX_VALUE) .addComponent(jButton1) .addContainerGap()) ); menuBar.setName("menuBar"); fileMenu.setText(resourceMap.getString("fileMenu.text")); fileMenu.setName("fileMenu");

javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(praktikum6_2.Praktikum6_ 2App.class).getContext().getActionMap(Praktikum6_2View.class, this); exitMenuItem.setAction(actionMap.get("quit")); exitMenuItem.setName("exitMenuItem"); fileMenu.add(exitMenuItem); menuBar.add(fileMenu); helpMenu.setText(resourceMap.getString("helpMenu.text")); helpMenu.setName("helpMenu"); aboutMenuItem.setAction(actionMap.get("showAboutBox")); aboutMenuItem.setName("aboutMenuItem"); helpMenu.add(aboutMenuItem); menuBar.add(helpMenu); statusPanel.setName("statusPanel"); statusPanelSeparator.setName("statusPanelSeparator"); statusMessageLabel.setName("statusMessageLabel"); statusAnimationLabel.setHorizontalAlignment(javax.swing.SwingConstants.L EFT); statusAnimationLabel.setName("statusAnimationLabel"); progressBar.setName("progressBar"); javax.swing.GroupLayout statusPanelLayout = new javax.swing.GroupLayout(statusPanel); statusPanel.setLayout(statusPanelLayout); statusPanelLayout.setHorizontalGroup( statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addComponent(statusPanelSeparator, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE) .addGroup(statusPanelLayout.createSequentialGroup() .addContainerGap()

.addComponent(statusMessageLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 230, Short.MAX_VALUE) .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(statusAnimationLabel) .addContainerGap()) ); statusPanelLayout.setVerticalGroup( statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addGroup(statusPanelLayout.createSequentialGroup() .addComponent(statusPanelSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(statusPanelLayout.createParallelGroup(javax.swing.GroupLayout. Alignment.BASELINE) .addComponent(statusMessageLabel) .addComponent(statusAnimationLabel) .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(3, 3, 3)) );

setComponent(mainPanel); setMenuBar(menuBar); setStatusBar(statusPanel); } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { String temp = jTextField1.getText(); jLabel1.setText(temp); } private javax.swing.JButton jButton1; private javax.swing.JLabel jLabel1; private javax.swing.JTextField jTextField1; private javax.swing.JPanel mainPanel; private javax.swing.JMenuBar menuBar; private javax.swing.JProgressBar progressBar; private javax.swing.JLabel statusAnimationLabel; private javax.swing.JLabel statusMessageLabel; private javax.swing.JPanel statusPanel; private final Timer messageTimer; private final Timer busyIconTimer; private final Icon idleIcon; private final Icon[] busyIcons = new Icon[15]; private int busyIconIndex = 0; private JDialog aboutBox; }

Running program :

Pertanyaan : 1. Yang dapat dilakukan oleh aplikasi yaitu menampilkan inputan pada jTextField1 ke jLabel1 jika user men-klik button Tulis (jButton1). 2. Maksud dari jTextField1.getText() adalah membaca text yang ada di dalam jTextField1.

3.

Maksud dari setText(temp) adalah method tersebut berfungsi memberikan nilai ke suatu data, dalam hal ini adalah parameter temp. Merubah temp pada setText() menjadi Tes Tombol private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { String temp = jTextField1.getText(); jLabel1.setText(Tes Tombol); } Compile program :

4.

Running program :

Jika button Tulis diklik :

Yang tampil pada jLabel1 menjadi Tes Tombol karena pada code parameter temp diubah menjadi Tes Tombol sehingga apapun yang dituliskan pada jTextField1 yang tampil setelah jButton1 diklik adalah Tes Tombol.

Kesimpulan : a. Java Swing adalah toolkit GUI pada Java yang sering dipakai untuk membuat aplikasi dengan interface berbasis grafis. b. Cara pembuatan GUI (dengan database) Untuk pembuatan database, seperti pada percobaan 1 Buat data database pada mysql dengan nama pbo. Di dalamnya buat tabel mahasiswa dengan kolom nama varchar(30), nim varchar(10), kelas varchar(2), asisten varchar(30). Setting koneksi mysql dengan java. Pada tab Services pilih MySQL(Connector/J driver), kemudian klik kanan pilih Connect Using

Mengisikan host, port, database, user name, dan password (jika ada)

Jika berhasil akan muncul :

Buat project baru Java Desktop Application

Isikan nama project, pilih Database Application untuk Application Shell

Untuk Database Connection pilih koneksi yang telah dibuat seperti di atas

Klik Finish

Jalankan ContohGuiApp.java

Klik New untuk memasukkan data

Isikan Nama, Nim, Kelas, dan Asisten. Kemudian klik Button Save

Data akan tersimpan di dalam database

Anda mungkin juga menyukai