/**
* Java. Level 2. Lesson 8
* CRUD Create, Read, Update, Delete
*
* @author Sergey Iryupin
* @version 0.2 dated Jan 19, 2018
*/
import java.util.*;
import java.sql.*;
class CRUD implements IConstants {
final String NAME_TABLE = "users";
final String SQL_CREATE_TABLE =
"DROP TABLE IF EXISTS " + NAME_TABLE + ";" +
"CREATE TABLE " + NAME_TABLE +
"(login CHAR(6) PRIMARY KEY NOT NULL," +
" passwd CHAR(6) NOT NULL);";
final String SQL_SELECT = "SELECT * FROM " + NAME_TABLE + ";";
final String DB_CREATED = "Darabase created.";
final String RECORD_ADDED = "Record added.";
final String RECORD_DELETED = "Record deleted.";
final String RECORD_UPDATED = "Record updated.";
final String UNKNOWN_COMMAND = "Unknown command, use [-c,-a,-r,-u,-d] only.";
final String LOGIN_COL = "login";
Connection connect;
Statement stmt;
ResultSet rs;
String sql;
public static void main(String[] args) {
new CRUD(args);
}
CRUD(String[] args) {
if (args.length == 0) {
Scanner sc = new Scanner(System.in);
System.out.print("> ");
String line = sc.nextLine();
args = line.split(" ");
}
switch (args[0]) {
case "-c":
openDBFile(SQLITE_DB)
.createTable(SQL_CREATE_TABLE);
System.out.println(DB_CREATED);
break;
case "-a":
openDBFile(SQLITE_DB)
.add(args[1], args[2]);
System.out.println(RECORD_ADDED);
break;
case "-r":
openDBFile(SQLITE_DB)
.list();
break;
case "-u":
openDBFile(SQLITE_DB)
.update(args[1], args[2]);
System.out.println(RECORD_UPDATED);
break;
case "-d":
openDBFile(SQLITE_DB)
.delete(args[1]);
System.out.println(RECORD_DELETED);
break;
default:
System.out.println(UNKNOWN_COMMAND);
}
}
private CRUD openDBFile(String dbName) { // open/create database
try {
Class.forName(DRIVER_NAME);
connect = DriverManager.getConnection(dbName);
stmt = connect.createStatement();
} catch (Exception e) {
e.printStackTrace();
}
return this;
}
private void createTable(String sqlCreateTable) { // create table
try {
stmt.executeUpdate(sqlCreateTable);
} catch (Exception e) {
e.printStackTrace();
}
}
private void add(String login, String passwd) { // add record
try {
stmt.executeUpdate("INSERT INTO " + NAME_TABLE +
" (login, passwd) " +
"VALUES ('" + login + "', '" + passwd + "');");
} catch (Exception e) {
e.printStackTrace();
}
}
private void update(String login, String passwd) { // update passwd by login
try {
stmt.executeUpdate("UPDATE " + NAME_TABLE +
" set PASSWD='" + passwd +
"' where LOGIN='" + login + "';");
} catch (Exception e) {
e.printStackTrace();
}
}
private void delete(String login) { // delete record by login
try {
stmt.executeUpdate("DELETE from " + NAME_TABLE +
" where LOGIN='" + login + "';");
} catch (Exception e) {
e.printStackTrace();
}
}
private void list() { // show all records
try {
System.out.println("LOGIN\t\tPASSWD");
rs = stmt.executeQuery(SQL_SELECT);
while (rs.next())
System.out.println(
rs.getString(LOGIN_COL) + "\t\t" +
rs.getString(PASSWD_COL));
} catch (Exception e) {
e.printStackTrace();
}
}
}