import java.sql.* ;
import java.util.Scanner ;
public class Main{
public static void main
( String [ ] args
) { final String DRIVER
= "com.mysql.jdbc.Driver" ; final String DB_URL
= "jdbc:mysql://localhost/school?serverTimezone=UTC" ; final String DB_USER
= "root" ; final String DB_PASS
= "password" ;
PreparedStatement psInsert
= null , psUpdate
= null , psDelete
= null , psSelect
= null ; Scanner sc
= new Scanner
( System .
in ) ;
try {
Class .forName ( DRIVER) ;
}
System .
out .
println ( "Unable to load driver" ) ; e.printStackTrace ( ) ;
return ;
}
try {
psInsert = conn.prepareStatement ( "INSERT INTO students (name, year_level, program) VALUES(?, ?, ?)" ) ;
psUpdate = conn.prepareStatement ( "UPDATE students SET name = ?, year_level = ?, program = ? WHERE id = ?" ) ;
psDelete = conn.prepareStatement ( "DELETE FROM students WHERE id = ?" ) ;
psSelect = conn.prepareStatement ( "SELECT * FROM students" ) ;
}
System .
out .
println ( "Unable to connect to database" ) ; e.printStackTrace ( ) ;
return ;
}
int choice = 0 ;
do {
System .
out .
println ( "Student Data Manager" ) ; System .
out .
println ( "1. Insert" ) ; System .
out .
println ( "2. Update" ) ; System .
out .
println ( "3. Delete" ) ; System .
out .
println ( "4. View" ) ; System .
out .
println ( "5. Exit" ) ; System .
out .
print ( "Enter choice: " ) ; choice = sc.nextInt ( ) ;
if ( choice == 1 ) {
System .
out .
print ( "Enter name: " ) ; System .
out .
print ( "Enter year level: " ) ; int yearLevel = sc.nextInt ( ) ;
System .
out .
print ( "Enter program: " ) ; try {
psInsert.setString ( 1 , name) ;
psInsert.setInt ( 2 , yearLevel) ;
psInsert.setString ( 3 , program) ;
psInsert.executeUpdate ( ) ;
}
System .
out .
println ( "Unable to execute SQL statement" ) ; e.printStackTrace ( ) ;
}
}
else if ( choice == 2 ) {
System .
out .
print ( "Enter id: " ) ; int id = sc.nextInt ( ) ;
System .
out .
print ( "Enter name: " ) ; System .
out .
print ( "Enter year level: " ) ; int yearLevel = sc.nextInt ( ) ;
System .
out .
print ( "Enter program: " ) ; try {
psUpdate.setString ( 1 , name) ;
psUpdate.setInt ( 2 , yearLevel) ;
psUpdate.setString ( 3 , program) ;
psUpdate.setInt ( 4 , id) ;
psUpdate.executeUpdate ( ) ;
}
System .
out .
println ( "Unable to execute SQL statement" ) ; e.printStackTrace ( ) ;
}
}
else if ( choice == 3 ) {
System .
out .
print ( "Enter id: " ) ; int id = sc.nextInt ( ) ;
try {
psDelete.setInt ( 1 , id) ;
psDelete.executeUpdate ( ) ;
}
System .
out .
println ( "Unable to execute SQL statement" ) ; e.printStackTrace ( ) ;
}
}
else if ( choice == 4 ) {
System .
out .
println ( "Student List" ) ; try {
while ( rs.next ( ) ) {
int id = rs.getInt ( "id" ) ;
String name
= rs.
getString ( "name" ) ; int yearLevel = rs.getInt ( "year_level" ) ;
String program
= rs.
getString ( "program" ) ; System .
out .
println ( "Student id = " + id
+ ", name = " + name
+ ", year level = " + yearLevel
+ ", program = " + program
) ; }
}
System .
out .
println ( "Unable to execute SQL statement" ) ; e.printStackTrace ( ) ;
}
}
else if ( choice == 5 ) {
System .
out .
println ( "Program Terminated!" ) ; }
else {
System .
out .
println ( "Invalid Choice!" ) ; }
} while ( choice != 5 ) ;
try {
psInsert.close ( ) ;
psUpdate.close ( ) ;
psDelete.close ( ) ;
psSelect.close ( ) ;
conn.close ( ) ;
System .
out .
println ( "Unable to close connections" ) ; e.printStackTrace ( ) ;
}
}
aW1wb3J0IGphdmEuc3FsLio7CmltcG9ydCBqYXZhLnV0aWwuU2Nhbm5lcjsKcHVibGljIGNsYXNzIE1haW57CiAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW11hcmdzKXsKICAgIGZpbmFsIFN0cmluZyBEUklWRVIgPSAiY29tLm15c3FsLmpkYmMuRHJpdmVyIjsKICAgIGZpbmFsIFN0cmluZyBEQl9VUkwgPSAiamRiYzpteXNxbDovL2xvY2FsaG9zdC9zY2hvb2w/c2VydmVyVGltZXpvbmU9VVRDIjsKICAgIGZpbmFsIFN0cmluZyBEQl9VU0VSID0gInJvb3QiOwogICAgZmluYWwgU3RyaW5nIERCX1BBU1MgPSAicGFzc3dvcmQiOwoKICAgIENvbm5lY3Rpb24gY29ubiA9IG51bGw7CiAgICBQcmVwYXJlZFN0YXRlbWVudCBwc0luc2VydCA9IG51bGwsIHBzVXBkYXRlID0gbnVsbCwgcHNEZWxldGUgPSBudWxsLCBwc1NlbGVjdCA9IG51bGw7CiAgICBTY2FubmVyIHNjID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKCiAgICB0cnl7CiAgICAgICAgQ2xhc3MuZm9yTmFtZShEUklWRVIpOwogICAgfQogICAgY2F0Y2goQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiBlKXsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlVuYWJsZSB0byBsb2FkIGRyaXZlciIpOwogICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHRyeXsKICAgICAgICBjb25uID0gRHJpdmVyTWFuYWdlci5nZXRDb25uZWN0aW9uKERCX1VSTCwgREJfVVNFUiwgREJfUEFTUyk7CiAgICAgICAgcHNJbnNlcnQgPSBjb25uLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJTlRPIHN0dWRlbnRzIChuYW1lLCB5ZWFyX2xldmVsLCBwcm9ncmFtKSBWQUxVRVMoPywgPywgPykiKTsKICAgICAgICBwc1VwZGF0ZSA9IGNvbm4ucHJlcGFyZVN0YXRlbWVudCgiVVBEQVRFIHN0dWRlbnRzIFNFVCBuYW1lID0gPywgeWVhcl9sZXZlbCA9ID8sIHByb2dyYW0gPSA/IFdIRVJFIGlkID0gPyIpOwogICAgICAgIHBzRGVsZXRlID0gY29ubi5wcmVwYXJlU3RhdGVtZW50KCJERUxFVEUgRlJPTSBzdHVkZW50cyBXSEVSRSBpZCA9ID8iKTsKICAgICAgICBwc1NlbGVjdCA9IGNvbm4ucHJlcGFyZVN0YXRlbWVudCgiU0VMRUNUICogRlJPTSBzdHVkZW50cyIpOwogICAgfQogICAgY2F0Y2goU1FMRXhjZXB0aW9uIGUpewogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVW5hYmxlIHRvIGNvbm5lY3QgdG8gZGF0YWJhc2UiKTsKICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpbnQgY2hvaWNlID0gMDsKICAgIGRvewogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU3R1ZGVudCBEYXRhIE1hbmFnZXIiKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIjEuIEluc2VydCIpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiMi4gVXBkYXRlIik7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIzLiBEZWxldGUiKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIjQuIFZpZXciKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIjUuIEV4aXQiKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJFbnRlciBjaG9pY2U6ICIpOwogICAgICAgIGNob2ljZSA9IHNjLm5leHRJbnQoKTsKICAgICAgICBpZihjaG9pY2UgPT0gMSl7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIkVudGVyIG5hbWU6ICIpOwogICAgICAgICAgICBTdHJpbmcgbmFtZSA9IHNjLm5leHQoKTsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiRW50ZXIgeWVhciBsZXZlbDogIik7CiAgICAgICAgICAgIGludCB5ZWFyTGV2ZWwgPSBzYy5uZXh0SW50KCk7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIkVudGVyIHByb2dyYW06ICIpOwogICAgICAgICAgICBTdHJpbmcgcHJvZ3JhbSA9IHNjLm5leHQoKTsKICAgICAgICAgICAgdHJ5ewogICAgICAgICAgICAgIHBzSW5zZXJ0LnNldFN0cmluZygxLCBuYW1lKTsKICAgICAgICAgICAgICBwc0luc2VydC5zZXRJbnQoMiwgeWVhckxldmVsKTsKICAgICAgICAgICAgICBwc0luc2VydC5zZXRTdHJpbmcoMywgcHJvZ3JhbSk7CiAgICAgICAgICAgICAgcHNJbnNlcnQuZXhlY3V0ZVVwZGF0ZSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoKFNRTEV4Y2VwdGlvbiBlKXsKICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlVuYWJsZSB0byBleGVjdXRlIFNRTCBzdGF0ZW1lbnQiKTsKICAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoY2hvaWNlID09IDIpewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJFbnRlciBpZDogIik7CiAgICAgICAgICAgIGludCBpZCA9IHNjLm5leHRJbnQoKTsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiRW50ZXIgbmFtZTogIik7CiAgICAgICAgICAgIFN0cmluZyBuYW1lID0gc2MubmV4dCgpOwogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJFbnRlciB5ZWFyIGxldmVsOiAiKTsKICAgICAgICAgICAgaW50IHllYXJMZXZlbCA9IHNjLm5leHRJbnQoKTsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiRW50ZXIgcHJvZ3JhbTogIik7CiAgICAgICAgICAgIFN0cmluZyBwcm9ncmFtID0gc2MubmV4dCgpOwogICAgICAgICAgICB0cnl7CiAgICAgICAgICAgICAgcHNVcGRhdGUuc2V0U3RyaW5nKDEsIG5hbWUpOwogICAgICAgICAgICAgIHBzVXBkYXRlLnNldEludCgyLCB5ZWFyTGV2ZWwpOwogICAgICAgICAgICAgIHBzVXBkYXRlLnNldFN0cmluZygzLCBwcm9ncmFtKTsKICAgICAgICAgICAgICBwc1VwZGF0ZS5zZXRJbnQoNCwgaWQpOwogICAgICAgICAgICAgIHBzVXBkYXRlLmV4ZWN1dGVVcGRhdGUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChTUUxFeGNlcHRpb24gZSl7CiAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJVbmFibGUgdG8gZXhlY3V0ZSBTUUwgc3RhdGVtZW50Iik7CiAgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmKGNob2ljZSA9PSAzKXsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiRW50ZXIgaWQ6ICIpOwogICAgICAgICAgICBpbnQgaWQgPSBzYy5uZXh0SW50KCk7CiAgICAgICAgICAgIHRyeXsKICAgICAgICAgICAgICBwc0RlbGV0ZS5zZXRJbnQoMSwgaWQpOwogICAgICAgICAgICAgIHBzRGVsZXRlLmV4ZWN1dGVVcGRhdGUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChTUUxFeGNlcHRpb24gZSl7CiAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJVbmFibGUgdG8gZXhlY3V0ZSBTUUwgc3RhdGVtZW50Iik7CiAgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmKGNob2ljZSA9PSA0KXsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJTdHVkZW50IExpc3QiKTsKICAgICAgICAgICAgdHJ5ewogICAgICAgICAgICAgIFJlc3VsdFNldCBycyA9IHBzU2VsZWN0LmV4ZWN1dGVRdWVyeSgpOwogICAgICAgICAgICAgIHdoaWxlKHJzLm5leHQoKSl7CiAgICAgICAgICAgICAgICBpbnQgaWQgPSBycy5nZXRJbnQoImlkIik7CiAgICAgICAgICAgICAgICBTdHJpbmcgbmFtZSA9IHJzLmdldFN0cmluZygibmFtZSIpOwogICAgICAgICAgICAgICAgaW50IHllYXJMZXZlbCA9IHJzLmdldEludCgieWVhcl9sZXZlbCIpOwogICAgICAgICAgICAgICAgU3RyaW5nIHByb2dyYW0gPSBycy5nZXRTdHJpbmcoInByb2dyYW0iKTsKICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU3R1ZGVudCBpZCA9ICIgKyBpZCArICIsIG5hbWUgPSAiICsgbmFtZSArICIsIHllYXIgbGV2ZWwgPSAiICsgeWVhckxldmVsICsgIiwgcHJvZ3JhbSA9ICIgKyBwcm9ncmFtKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goU1FMRXhjZXB0aW9uIGUpewogICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVW5hYmxlIHRvIGV4ZWN1dGUgU1FMIHN0YXRlbWVudCIpOwogICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZihjaG9pY2UgPT0gNSl7CiAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlByb2dyYW0gVGVybWluYXRlZCEiKTsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSW52YWxpZCBDaG9pY2UhIik7CiAgICAgICAgfQogICAgfXdoaWxlKGNob2ljZSAhPSA1KTsKCiAgICB0cnl7CiAgICAgICAgcHNJbnNlcnQuY2xvc2UoKTsKICAgICAgICBwc1VwZGF0ZS5jbG9zZSgpOwogICAgICAgIHBzRGVsZXRlLmNsb3NlKCk7CiAgICAgICAgcHNTZWxlY3QuY2xvc2UoKTsKICAgICAgICBjb25uLmNsb3NlKCk7CiAgICB9Y2F0Y2goU1FMRXhjZXB0aW9uIGUpewogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVW5hYmxlIHRvIGNsb3NlIGNvbm5lY3Rpb25zIik7CiAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKICAgIH1jYXRjaChOdWxsUG9pbnRlckV4Y2VwdGlvbiBlKXt9CiAgfQp9