SlideShare a Scribd company logo
1 of 18
JDBC
Definition
• JDBC – Java Database Connectivity
• JDBC provides standard library for accessing relational database
• API standardize: connection establishment, query initiation, method
to stored query, data structure of query syntax
• API doesn’t standardize SQL syntax
7/26/2023 JDBC 2
JDBC Datatypes
7/26/2023 JDBC 3
7 Steps Using JDBC
Load the
driver
Define the
Connection
URL
Establish
The
Connection
Create a
Statement
Object
Execute a
Query
Process
Results
Close the
Connection
1 2 3 4 5
7/26/2023 JDBC 4
6 7
Step 1 – Load the Driver
try {
Class.forName("org.postgresql.Driver");
Class.forName("com.mysql.jdbc.Driver");
}
catch (ClassNotFoundException e) {
System.out.println("Error Loading Driver :
"+e);
}
7/26/2023 JDBC 5
Step 2 – Define the Connection
URL
String host = "dbserver.bandung.go.id";
String db = "db_simpeg";
int port = 3036;
String mysqlURL = “jdbc:mysql//”+ host +“:”+ port
+“/”+ db;
String oracleURL = “jdbc:oracle:thin:@”+ host +“:”+
port +“:”+ db;
7/26/2023 JDBC 6
Step 3 – Establish the
Connection
String username = “dbUserLogin”;
String password = “dbUserPassword”;
Connection connection =
DriverManager.getConnection(mysqlURL, username,
password);
7/26/2023 JDBC 7
Step 4 – Create Statement
Statement statement = connection.createStatement();
7/26/2023 JDBC 8
Step 5 – Execute a Query
String query = “SELECT column1, column2, column3 FROM table”;
ResultSet rs = statement.executeQuery(query);
• Use statement.executeUpdate if you want to modify the database.
These modifying operations includes INSERT, UPDATE and
DELETE.
String query = “INSERT INTO table VALUES (value1, value2,
value3)”;
ResultSet rs = statement.executeUpdate(query);
7/26/2023 JDBC 9
Step 6 – Process the Result
String nama = “”;
String alamat = “”;
float nilai = 0.0;
int noUrut = 0;
while (rs.next()) {
nama = rs.getString(1); // the 1st column number is 1 not 0.
alamat = rs.getString(2);
nilai = rs.getFloat(3);
noUrut = rs.getInt(4);
}
7/26/2023 JDBC 10
Step 7 – Close the Connection
connection.close();
• Use this statement only if you are sure that there is
no more database operation will be proceed.
7/26/2023 JDBC 11
Statement
• SQL statements are sent to the database through
Statement object.
• Three types of statement objects :
• Statement - for executing a simple SQL statement
• Prepared Statement - for executing a pre-compiled
SQL statement that use parameters
• Callable Statement - for executing a database stored
procedure
7/26/2023 JDBC 12
Prepared Statement
• Execute the same SQL statement multiple times.
• Create statement in standard form that is sent to the database
for compilation before actually being used
• Mark the parameters using "?" and replace it using setXXX
methods when ready to manipulate them
• Prepared Statement execute these parameters without
arguments.
• execute
• executeQuery()
• executeUpdate()
7/26/2023 JDBC 13
Prepared Statement Example
Connection connection = DriverManager.getConnection(url, user, password);
PreparedStatement statement =
connection.prepareStatement("UPDATE accounts "+
"SET debit = ?, credit = ? WHERE id = ?");
int[] debits = getDebits();
int[] credits = getCredits();
int[] ids = getIds();
for(int i=0; i<credits.length; i++) {
statement.setInt(1, debits[i]);
statement.setInt(2, credits[i]);
statement.setInt(3, ids[i]);
statement.executeUpdate();
}
7/26/2023 JDBC 14
Transaction
• Every time we execute an SQL statement, it is
automatically committed to database by default.
• Turn auto commit off to group two or more
statements together into a transaction
• connection.setAutoCommit(false);
• Call commit to permanently record the changes to
database after executing a group of statements
• Call rollback if an error occurs
7/26/2023 JDBC 15
Transaction Example
Connection connection = DriverManager.getConnection(url, username, passwd);
connection.setAutoCommit(false);
try {
statement.executeUpdate(...);
statement.executeUpdate(...);
} catch(SQLException e) {
try {
connection.rollback();
} catch(SQLException e) { }
} finally {
try {
connection.commit();
connection.close();
} catch(SQLException e) {}
}
7/26/2023 JDBC 16
Tugas
Buat sebuah program, menggunakan Java Swing, connect ke database
(boleh MySQL, boleh PostgreSQL), setidaknya memiliki fitur CRUD
- Create a single record
- Retrieve data from table
- Update a single record
- Delete a single record
7/26/2023 JDBC 17
Thank you
Bayu Rimba Pratama, ST, M.Kom

More Related Content

Similar to Slide Latihan JDBC

Similar to Slide Latihan JDBC (20)

Lecture17
Lecture17Lecture17
Lecture17
 
JDBC ppt
JDBC pptJDBC ppt
JDBC ppt
 
Jdbc
Jdbc   Jdbc
Jdbc
 
jdbc_presentation.ppt
jdbc_presentation.pptjdbc_presentation.ppt
jdbc_presentation.ppt
 
Jdbc ppt
Jdbc pptJdbc ppt
Jdbc ppt
 
Jdbc
JdbcJdbc
Jdbc
 
Jdbc ppt
Jdbc pptJdbc ppt
Jdbc ppt
 
Java &amp; banco de dados
Java &amp; banco de dadosJava &amp; banco de dados
Java &amp; banco de dados
 
Jdbc connectivity
Jdbc connectivityJdbc connectivity
Jdbc connectivity
 
JDBC
JDBCJDBC
JDBC
 
Jdbc
JdbcJdbc
Jdbc
 
Jdbc
JdbcJdbc
Jdbc
 
Chapter vii(accessing databases with jdbc)
Chapter vii(accessing databases with jdbc)Chapter vii(accessing databases with jdbc)
Chapter vii(accessing databases with jdbc)
 
Spring database - part2
Spring database -  part2Spring database -  part2
Spring database - part2
 
Java Web Programming [3/9] : Servlet Advanced
Java Web Programming [3/9] : Servlet AdvancedJava Web Programming [3/9] : Servlet Advanced
Java Web Programming [3/9] : Servlet Advanced
 
Java Web Programming Using Cloud Platform: Module 3
Java Web Programming Using Cloud Platform: Module 3Java Web Programming Using Cloud Platform: Module 3
Java Web Programming Using Cloud Platform: Module 3
 
Jdbc
JdbcJdbc
Jdbc
 
Jdbc
JdbcJdbc
Jdbc
 
Jdbc (database in java)
Jdbc (database in java)Jdbc (database in java)
Jdbc (database in java)
 
Advance Java Practical file
Advance Java Practical fileAdvance Java Practical file
Advance Java Practical file
 

More from Bayu Rimba

Slide Presentasi Dasar-dasar Flowchart
Slide Presentasi Dasar-dasar FlowchartSlide Presentasi Dasar-dasar Flowchart
Slide Presentasi Dasar-dasar FlowchartBayu Rimba
 
Slide Tugas Algoritma dan Pemrograman
Slide Tugas Algoritma dan PemrogramanSlide Tugas Algoritma dan Pemrograman
Slide Tugas Algoritma dan PemrogramanBayu Rimba
 
Slide Presentasi Teknik OO pada Desain Software
Slide Presentasi Teknik OO pada Desain SoftwareSlide Presentasi Teknik OO pada Desain Software
Slide Presentasi Teknik OO pada Desain SoftwareBayu Rimba
 
Slide Dasar Materi Java Collection Framework
Slide Dasar Materi Java Collection FrameworkSlide Dasar Materi Java Collection Framework
Slide Dasar Materi Java Collection FrameworkBayu Rimba
 
Slide Latihan JDBC bagian 2
Slide Latihan JDBC bagian 2Slide Latihan JDBC bagian 2
Slide Latihan JDBC bagian 2Bayu Rimba
 
Presentasi latihan pemrograman Java GUI menggunakan SWING
Presentasi latihan pemrograman Java GUI menggunakan SWINGPresentasi latihan pemrograman Java GUI menggunakan SWING
Presentasi latihan pemrograman Java GUI menggunakan SWINGBayu Rimba
 

More from Bayu Rimba (6)

Slide Presentasi Dasar-dasar Flowchart
Slide Presentasi Dasar-dasar FlowchartSlide Presentasi Dasar-dasar Flowchart
Slide Presentasi Dasar-dasar Flowchart
 
Slide Tugas Algoritma dan Pemrograman
Slide Tugas Algoritma dan PemrogramanSlide Tugas Algoritma dan Pemrograman
Slide Tugas Algoritma dan Pemrograman
 
Slide Presentasi Teknik OO pada Desain Software
Slide Presentasi Teknik OO pada Desain SoftwareSlide Presentasi Teknik OO pada Desain Software
Slide Presentasi Teknik OO pada Desain Software
 
Slide Dasar Materi Java Collection Framework
Slide Dasar Materi Java Collection FrameworkSlide Dasar Materi Java Collection Framework
Slide Dasar Materi Java Collection Framework
 
Slide Latihan JDBC bagian 2
Slide Latihan JDBC bagian 2Slide Latihan JDBC bagian 2
Slide Latihan JDBC bagian 2
 
Presentasi latihan pemrograman Java GUI menggunakan SWING
Presentasi latihan pemrograman Java GUI menggunakan SWINGPresentasi latihan pemrograman Java GUI menggunakan SWING
Presentasi latihan pemrograman Java GUI menggunakan SWING
 

Recently uploaded

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 

Recently uploaded (20)

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 

Slide Latihan JDBC

  • 2. Definition • JDBC – Java Database Connectivity • JDBC provides standard library for accessing relational database • API standardize: connection establishment, query initiation, method to stored query, data structure of query syntax • API doesn’t standardize SQL syntax 7/26/2023 JDBC 2
  • 4. 7 Steps Using JDBC Load the driver Define the Connection URL Establish The Connection Create a Statement Object Execute a Query Process Results Close the Connection 1 2 3 4 5 7/26/2023 JDBC 4 6 7
  • 5. Step 1 – Load the Driver try { Class.forName("org.postgresql.Driver"); Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { System.out.println("Error Loading Driver : "+e); } 7/26/2023 JDBC 5
  • 6. Step 2 – Define the Connection URL String host = "dbserver.bandung.go.id"; String db = "db_simpeg"; int port = 3036; String mysqlURL = “jdbc:mysql//”+ host +“:”+ port +“/”+ db; String oracleURL = “jdbc:oracle:thin:@”+ host +“:”+ port +“:”+ db; 7/26/2023 JDBC 6
  • 7. Step 3 – Establish the Connection String username = “dbUserLogin”; String password = “dbUserPassword”; Connection connection = DriverManager.getConnection(mysqlURL, username, password); 7/26/2023 JDBC 7
  • 8. Step 4 – Create Statement Statement statement = connection.createStatement(); 7/26/2023 JDBC 8
  • 9. Step 5 – Execute a Query String query = “SELECT column1, column2, column3 FROM table”; ResultSet rs = statement.executeQuery(query); • Use statement.executeUpdate if you want to modify the database. These modifying operations includes INSERT, UPDATE and DELETE. String query = “INSERT INTO table VALUES (value1, value2, value3)”; ResultSet rs = statement.executeUpdate(query); 7/26/2023 JDBC 9
  • 10. Step 6 – Process the Result String nama = “”; String alamat = “”; float nilai = 0.0; int noUrut = 0; while (rs.next()) { nama = rs.getString(1); // the 1st column number is 1 not 0. alamat = rs.getString(2); nilai = rs.getFloat(3); noUrut = rs.getInt(4); } 7/26/2023 JDBC 10
  • 11. Step 7 – Close the Connection connection.close(); • Use this statement only if you are sure that there is no more database operation will be proceed. 7/26/2023 JDBC 11
  • 12. Statement • SQL statements are sent to the database through Statement object. • Three types of statement objects : • Statement - for executing a simple SQL statement • Prepared Statement - for executing a pre-compiled SQL statement that use parameters • Callable Statement - for executing a database stored procedure 7/26/2023 JDBC 12
  • 13. Prepared Statement • Execute the same SQL statement multiple times. • Create statement in standard form that is sent to the database for compilation before actually being used • Mark the parameters using "?" and replace it using setXXX methods when ready to manipulate them • Prepared Statement execute these parameters without arguments. • execute • executeQuery() • executeUpdate() 7/26/2023 JDBC 13
  • 14. Prepared Statement Example Connection connection = DriverManager.getConnection(url, user, password); PreparedStatement statement = connection.prepareStatement("UPDATE accounts "+ "SET debit = ?, credit = ? WHERE id = ?"); int[] debits = getDebits(); int[] credits = getCredits(); int[] ids = getIds(); for(int i=0; i<credits.length; i++) { statement.setInt(1, debits[i]); statement.setInt(2, credits[i]); statement.setInt(3, ids[i]); statement.executeUpdate(); } 7/26/2023 JDBC 14
  • 15. Transaction • Every time we execute an SQL statement, it is automatically committed to database by default. • Turn auto commit off to group two or more statements together into a transaction • connection.setAutoCommit(false); • Call commit to permanently record the changes to database after executing a group of statements • Call rollback if an error occurs 7/26/2023 JDBC 15
  • 16. Transaction Example Connection connection = DriverManager.getConnection(url, username, passwd); connection.setAutoCommit(false); try { statement.executeUpdate(...); statement.executeUpdate(...); } catch(SQLException e) { try { connection.rollback(); } catch(SQLException e) { } } finally { try { connection.commit(); connection.close(); } catch(SQLException e) {} } 7/26/2023 JDBC 16
  • 17. Tugas Buat sebuah program, menggunakan Java Swing, connect ke database (boleh MySQL, boleh PostgreSQL), setidaknya memiliki fitur CRUD - Create a single record - Retrieve data from table - Update a single record - Delete a single record 7/26/2023 JDBC 17
  • 18. Thank you Bayu Rimba Pratama, ST, M.Kom