MATERI V KONEKSI KE DATABASE, METADATA Agar project yang kita buat dapat berkoneksi dengan database yang kita punya, maka kita harus mengkoneksikan database tersebut dengan project yang ada. Proses koneksi : a. Registrasi driver b. Koneksi ke database c. Keduanya harus ada dalam blok instruksi try{} catch(Exception) {} Class/Interface yang dipakai: Class Class Method: static Class forName(String namaclass) registrasi class Driver Cth: Class c=Class.forName(“com.jdbc.mysql.Driver”); Semua class yang dipakai untuk pengelolaan database, ada pada package java.sql.* Class DriverManager Method: Connection getConnection(String lokasi,String username, String pwd) Cth: String lokasi=”jdbc:mysql://localhost/nama_db”; String uname=”username”; String pwd=”password”; Connection con=DriverManager.getConnection(lokasi,uname,pwd); Connection Interface Exception: Class ClassNotFoundException Exception akan muncul jika ada kesalahan registrasi class, penggunaan method forName dari class Class. Class SQLExceptionException untuk mengetahui kesalahan koneksi dan akses database/table. Contoh 1 Buat project baru, tambahkan object form dengan rancangan sbb: Pada tombol TEST KONEKSI tambahkan kode program berikut: Tambahkan library MYSQL ke project dengan cara, klik kanan Libraries pilih Add Library Akan muncul dialog pilihan sbb: Pilih MySQL JDBC Driver, dan klik tombol Add Library. Jalankan. Contoh 2. Jika project yang kita buat melibatkan banyak form, dan setiap form harus melakukan koneksi ke database, akan lebih baik jika proses koneksi dibuat dalam class tersendiri sehingga kita tidak perlu menuliskan proses koneksi berulang-ulang. Buat project, tambahkan Form seperti pada contoh 1 sbb: Pada project ini tambahkan juga object class (Pilih Java Class, bukan Java Form), dan buatlah constructor pada class untuk proses koneksi sbb: Pada form yang sudah dirancang sebelumnya tambahkan event berikut untuk tombol TES KONEKSI, dan jalankan. Contoh 3 Proses koneksi juga dapat diletakkan pada package yang berbeda dengan form. Buat project baru, tambahkan form yang sama dengan contoh 1 dan contoh 2 sebelumnya. Pada Source Package, Klik kanan package yang namanya sama dengan project anda, pilih New Java Package Akan muncul dialog untuk mengisikan nama package. Ganti newpackage dengan data. Klik tombol finish. Akan terbentuk package baru dengan nama tigakoneksi.data dapat dilihat sbb: Klik kanan package baru ini, tambahkan object Java Class, tuliskan code berikut: Pada rancangan form, tambahkan event berikut untuk tombol TES KONEKSI 2 : Jika muncul tanda kesalahan, klik kanan pada baris code program, pilih Fix Imports. Otomatis akan ditambahkan nama package baru yang kita punya sbb: Jalankan. METADATA DATABASE Metadata data mengenai data Interface yang digunakan: Interface Connection Method : Statement createStatement() membuat object Statement (interface Statement) untuk mengirim perintah query ke database DatabaseMetaData getMetaData() mendapatkan metadata yang disimpan ke object DatabaseMetaData (interface DatabasemetaData) dari database yang ada pada object Connection. Interface DatabaseMetaData Method: ResultSet getTables(String catalog, String schema, String tablename, String[] type) mengetahui informasi table-tabel dari database yang metadatanya ada di DatabaseMetaData. ResultSet getColumns(String catalog, String schema, String tablename, String nmcolumn) mengetahui nama-nama field suatu tabel dari database yang metadatanya ada di DatabaseMetaData. Interface Resultset Method: String getString(String nmcolumn) mengambil nilai kolom yang ditunjuk dari suatu ResultSet Metadata dari suatu database : 1. Dapatkan metadata dari koneksi dan simpan ke DatabaseMetaData DatabaseMetaData dbmd=con.getMetaData(); 2. Dapatkan informasi table dari databasemetadata dengan fungsi getTables dan simpan ke ResultSet String[] type={“TABLE”}; ResultSet rs=dbmd.getTables(null,null,null,type); 3. Tampilkan informasi masing-masing table dengan perulangan (rs.next()) sbb: a. Cari nama table String nm_tbl=rs.getString(“TABLE_NAME”); b. Cari struktur table rs1=dbmd.getColumns(null,null,nm_tbl,null); c. Tampilkan struktur masing-masing table dengan perulangan (rs1.next()) sbb: String nm_field=rs1.getString(“COLUMN_NAME”); String tp_field=rs1.getString(“TYPE_NAME”); String lb_field=rs1.getString(“COLUMN_SIZE”); Contoh Menampilkan nama semua table yang ada dalam database. Buat project baru, tambahkan object form dengan rancangan sbb: Pada properties model (JTable) ubah menjadi Custom Code. Tambahkan package baru, pada package ini tambahkan object Java Class, tuliskan code untuk koneksi ke database. Tuliskan juga instruksi berikut pada source form diatas. Jalankan, akan didapat sbb: Metadata dari suatu ResultSet Interface yang terlibat: Interface Statement Method: ResultSet executeQuery(String sql) eksekusi query yang menghasilkan satu ResultSet (Query SELECT) Interface ResultSet Method: ResultSetMetaData getMetaData() mendapatkan metadata ResultSet. Interface ResultSetMetaData Method: int getColumnCount() mendapatkan jumlah kolom suatu ResultSet String getTableName(int i) mendapatkan nama table String getColumnName(int i) mendapatkan nama kolom ke i String getColumnTypeName(int i) mendapatkan tipe kolom ke i Langkah untuk mendapatkan metadata resultSet: 1. Buat Statement Statement stt=con.createStatement(); 2. Dapatkan ResultSet (eksekusi query) String sql=”Select * from nm_tbl”; ResultSet rs=stt.executeQuery(sql); 3. Dapatkan metadata ResultSetMetaData rsmd=rs.getMetaData(); 4. Dapatkan jumlah kolom int j=rsmd.getColumnCount(); 5. Dapatkan nama table String nm_tbl=rsmd.getTableName(index); 6. Dapatkan nama field dan tipe, dengan perulangan for(int i=1;i<=j;i++) String nm_field=rsmd.getColumnName(i); String tp_field=rsmd.getColumnTypeName(i); Contoh Pada project yang sudah ada, tambahkan form dengan rancangan sbb: Pada Tombol OK, tuliskan code berikut Jalankan, akan didapat sbb: