Kali ini kita akan mencoba membaca data di dalam database melalui aplikasi yang dibuat dari bahasa pemrograman java. Database yang akan kita gunakan adalah MySQL. Pada postingan sebelumnya saya sudah menjelaskan tentang bagaimana membuat database sederhana dengan MySQL. Sekarang tinggal kita hubungkan koneksinya pada program java nantinya.
Sebelum kita menghubungkan database dengan program java, kita membutuhkan sebuah library java yang nantinya berguna sebagai “perantara” antara database MySQL dengan program java kita. Library yang akan kita gunakan adalah MySQL connector java yang anda bisa download disini, untuk aplikasi ini saya menggunakan mysql-connector-java-5.1.7.
Setelah library di add dalam ide baru kita bisa memanggil ataupun menggunakan db tersebut.
Di dalam lab kami diberi penjelasan seperti diatas dan codenya diberi oleh aslab kami seperti dbawah ini:
Database.java
package Pertemuan6.Complex; import java.sql.*; public class Database { private static final String dbName = "fedosdb", dbUsername = "root", dbPass = ""; public Statement makeStatement() throws SQLException { Connection connection = DriverManager.getConnection( "jdbc:mysql://localhost:3306/" + dbName, dbUsername, dbPass ); return connection.createStatement(); } }
Model.java
package Pertemuan6.Complex;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public abstract class Model {
protected abstract String tableName();
public <T> List<T> select(String where, Class<? extends Model> className) {
Database db = new Database();
List<T> list = new ArrayList<>();
try {
Statement statement = db.makeStatement();
String str = "SELECT * FROM " + tableName();
if (where != null)
str += " WHERE " + where;
ResultSet result = statement.executeQuery(str);
HashMap<Integer, Method> methods = new HashMap<Integer, Method>();
for (int i = 1; i <= result.getMetaData().getColumnCount(); i++) {
String columnName = result.getMetaData().getColumnName(i);
try {
switch (result.getMetaData().getColumnType(i)) {
case Types.INTEGER:
case Types.SMALLINT:
case Types.TINYINT:
case Types.BIGINT:
methods.put(i, className.getDeclaredMethod("set" + columnName, Integer.class));
case Types.VARCHAR:
case Types.CHAR:
methods.put(i, className.getDeclaredMethod("set" + columnName, String.class));
}
} catch (NoSuchMethodException e) {
System.err.println("No method named set" + columnName);
}
}
while (result.next()) {
try {
T o = (T) className.newInstance();
for (int i = 1; i <= result.getMetaData().getColumnCount(); i++) {
Method method = methods.get(i);
if (method != null) {
switch (result.getMetaData().getColumnType(i)) {
case Types.INTEGER:
case Types.SMALLINT:
case Types.TINYINT:
case Types.BIGINT:
method.invoke(o, result.getInt(i));
break;
case Types.VARCHAR:
case Types.CHAR:
method.invoke(o, result.getString(i));
break;
}
}
}
list.add(o);
} catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
e.printStackTrace();
}
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
}
User.java
package Pertemuan6.Complex; import java.util.List; public class User extends Model { private Integer id; private String username; @Override protected String tableName() { return "user"; } public static void main(String[] args) { User user = new User(); List<User> list = user.select(null, User.class); System.out.println(list); } public Integer getid() { return id; } public void setid(Integer id) { this.id = id; } public String toString() { if (username != null) return username.toString(); return null; }public String getusername() { return username; } public void setusername(String username) { this.username = username; } }
sekian~
Komentar
Posting Komentar