Kemarin sempat berurusan dengan Java dalam rangka membuat suatu project yang hanya membutuhkan koneksi ke database MySQL. Project ini teramat sangat sederhana sehingga tidak terlalu nyaman jika harus menggunakan library database seperti Hibernate, atau lainnya yang terlalu besar dan terlalu ribet dalam konfigurasinya.

Update: Kunjungi post berikut untuk demo dan update MySDB.

Sempat mencari-cari juga library/framework database (terutama MySQL) yang ada untuk pemrograman Java, namun rata-rata yang ditemukan adalah framework yang lumayan besar, dan (terlalu) kompleks, sehingga Learning-curve-nya terlalu ribet dan lama. Karena tidak ditemukan yang cocok, akhirnya memutuskan untuk membuatnya sendiri.

Dengan menggunakan mysql-connector-java sebagai landasan utama untuk berkomunikasi dengan MySQL Server, saya membuat sebuah library kecil yang tujuan utamanya adalah membuat proses pengambilan data ke database lebih mudah dan sederhana. Sejatinya, saya adalah seorang programmer yang lebih banyak bermain dengan PHP ketimbang Java, sehingga library ini agak kurang OOP jika dibandingkan dengan library seperti Hibernate atau sejenisnya.

MySDB, Java Simple MySQL Library namanya, atau sebut saja MySDB.

Jika anda pernah menggunakan PHP plus MySQL, anda pasti tahu perintah mysql_fetch_array(), dimana hasil perintah tersebut adalah array yang dengan mudah bisa anda ambil value dari database-nya hanya dengan menyatakan key dari array tersebut.

Hal inilah yang dilakukan oleh MySDB, sebagai wrapper untuk melakukan query yang sederhana ke database MySQL anda. Dan dengan demikian akan sangat mudah untuk mengambil sebuah data dari MySQL server. Tanpa mapping Object, tanpa XML, tanpa Ribet.

Berikut contoh sederhananya

1
2
3
4
5
6
7
8
9
10
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
43
44
45
46
47
48
49
50
51
52
53
54
package sample;
 
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
 
//MySDB
import org.lee.mysdb.*;
 
 
public class sample {
    public static void main(String[] args) 
    {
        Map<String, String> conf = new HashMap<String, String>();
        conf.put("dbName", "sampleJava");
 
        MySDB db = new org.lee.mysdb.MySDB(conf);
        if(db.connectDB())
            System.out.print("CONNECTED to database\n");
 
        String sql = "SELECT uid, name FROM test";
        dbList list = null;
        dbRow row = null;
        String s = "";
        try {
            list = db.getList(sql);
        } catch (SQLException e) {
            e.printStackTrace();
            return;
        }
 
        for(int i : list.keySet())
        {
            row = (dbRow) list.get(i);
            System.out.print("#" + i + " User: " + row.get("uid") + ", name: " + row.get("name") + "\n");
        }
 
        System.out.print("Number of row: " + db.getLastRowCount() + "\n");
 
        try{
            row = db.getRow(sql + " where uid = 2");
            s = db.getVar("select 2 * 4");
            int y = db.nonTransactQuery("update test set name = 'BUDI' where uid = 1");
            System.out.print("y is " + y + "\n");
        }
        catch(SQLException e)
        {
            e.printStackTrace();
            return;
        }
        System.out.print("getRow. User: " + row.get("uid") + ", name: " + row.get("name") + "\n");
        System.out.print("x is " + s);
    }
}

Struktur database yang digunakan pada contoh diatas adalah

1
2
3
4
5
6
7
8
CREATE TABLE IF NOT EXISTS `test` (
  `uid` INT(11) NOT NULL,
  `name` VARCHAR(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
INSERT INTO `test` (`uid`, `name`) VALUES
(1, 'BUDI'),
(2, 'AMIR');

Terakhir, jika tertarik, silakan download disini, dan dokumentasinya disini. Jika ada bug, mohon anda bersedia sampaikan via comment dibawah. Atau email langsung ke saya. Cek di website ini.