Postingan ini ditulis sehubungan adanya Tugas Kuliah dari Pak Jack dalam Matakuliah Pemrograman Jaringan, Tugas ini adalah Memodifikasi Program Chat Java Berbasis Command Line yang di Download agar ada log/history dari Chat masing-masing user. Untuk kali ini Kelompok kami memodifikasi agar Log/History bisa tersimpan dalam DBMS, DMBS yang digunakan adalah Mysql.
1. Download Source Code Java non Koneksi DBMS Mysql
disini
2. Koneksi Database Mysql-Java dengan mysql-connector-java-3.1.14-bin.jar bisa di download
disini
3. Buat Database yang nantinya untuk menyimpan Log/History
> create database chat;
> use chat;
> create table chat(user varchar(50), message varchar(100), time datetime);
atau bisa didownload disini
4. Modifikasi Program Server.java :
- Tambahkan Header berikut :
import java.sql.Connection;- Tambahkan Deklarasi Variabel untuk Koneksi Database Mysql :
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
Connection conn = null;
String dbUserName = "root"; // MySQL database username
String dbPassword = "abi"; // MySQL database password
String dbUrl = "jdbc:mysql://localhost/chat";
- Tambahkan Test Koneksi ke Database :
try {
Class forNam = Class.forName("com.mysql.jdbc.Driver");
try {
forNam.newInstance();
} catch (InstantiationException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (ClassNotFoundException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
try {
conn = DriverManager.getConnection(dbUrl, dbUserName, dbPassword);
System.out.println("Database connection establish...!");
} catch (SQLException ex) {
System.out.println("Cannot connect to database server...!!");
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
- Tambahkan Methode untuk Memasukan Log/History/Chat/Message kedalam Database, contoh : Method Insert dengan Parameter String
public void insert(String x) {
// try to close the connection
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost/chat","root","abi");
Statement st = conn.createStatement();
String insertSql = "INSERT chat VALUES('"+username+"','"+x+"','" + sdf.format(new Date()) + "')";
int val = st.executeUpdate(insertSql);
} catch (SQLException ex) {
System.out.println("Cannot connect to database server...!!");
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
}
- Tambahkan perintah untuk memanggil Methode tersebut,
1. jalankan Methode saat user login :
class ClientThread extends Thread {
- - - - - -
ClientThread(Socket socket) {
insert "Telah Terkoneksi");
}
}
2. jalankan Methode saat User mengirim message :
public void run() {
- - - - - - -
case ChatMessage.MESSAGE:
broadcast(username + ": " + message);
//------------------------------
insert(message);
//------------------------------
break;
3. jalankan Methode saat User logout :
public void run() {
- - - - - - -
case ChatMessage.LOGOUT:
display(username + " disconnected with a LOGOUT message.");
keepGoing = false;
insert("disconnected with a LOGOUT message");
break;
- Rubah Juga Tipe Format Date menjadi Tanggal dan Jam:
public Server(int port, ServerGUI sg) {
// GUI or not
this.sg = sg;
// the port
this.port = port;
// to display hh:mm:ss
sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
// ArrayList for the Client list
al = new ArrayList<ClientThread>();
}
Hasil :
# java Server
misal
IP Server : 192.168.88.168
port : 1500
# java Client abby 1500 192.168.88.168 :
dan Respon Server :
hasil Hostory yang masuk ke Database :
# java Client dono 1500 192.168.88.168 :
Respon user abby dan server :
Penjelasan :
Nanti Lagi nulisnya ...
EmoticonEmoticon