rendered paste bodyimport java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
//import java.sql.Statement;
import java.sql.PreparedStatement;
public class q1 {
static String getRanking = "SELECT season, name, count(*) AS games,"
+" sum(CASE WHEN points = 3 THEN 1 ELSE 0 END) AS won,"
+" sum(CASE WHEN points = 1 THEN 1 ELSE 0 END) AS draw,"
+" sum(CASE WHEN points = 0 THEN 1 ELSE 0 END) AS lost,"
+" sum(points) AS points, sum(goalsFor) AS scoredGoals,"
+" sum(goalsAgainst) AS concededGoals"
+" FROM"
+" (SELECT season, club, goalsFor, goalsAgainst,"
+" (CASE WHEN goalsFor > goalsAgainst THEN 3"
+" WHEN goalsFor = goalsAgainst THEN 1"
+" ELSE 0 END) AS points "
+" FROM"
+" ((SELECT season, clubIDHome AS club,"
+" homeGoals As goalsFor, visitorGoals AS goalsAgainst"
+" FROM game)"
+" UNION ALL"
+" (SELECT season, clubIDvisitor AS club,"
+" visitorGoals AS goalsFor, homeGoals AS goalsAgainst"
+" FROM game)) t1) t2, club"
+" WHERE season = ? AND club = clubID "
+" GROUP BY season, club"
+" ORDER BY season, points DESC";
// TODO: put the ranking query here, selecting only one season
// you must have a ? for the season parameter
// (e.g. WHERE season = ?)
static String getGame =
" SELECT g.gameID FROM game g"
+ " JOIN club h ON h.clubID = g.clubIDhome"
+ " JOIN club v ON v.clubID = g.clubIDvisitor"
+ " WHERE h.name = ? and v.name = ? AND g.season = ?";
static String getPerson =
" SELECT personID FROM person WHERE name=?";
// TODO: some query strings you might write
static String updateGame = "";
static String maxEvent = ""; // used to get a unique fresh eventID
static String insertEvent = "";
static String deleteEvents = "";
static Connection connect() {
Connection conn = null;
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (InstantiationException ie){
System.out.println("Class Instantiation Exception: " + ie);
} catch (ClassNotFoundException cnf){
System.out.println("Class Not Found Exception: " + cnf);
} catch (IllegalAccessException iae){
System.out.println("Illegal Access Exception: " + iae);
}
try {
conn = DriverManager.getConnection( "jdbc:mysql://mysql1.few.vu.nl/db1-06-dbs?user=db1-06-usr&password=db1-06-pwd", "db1-06-usr", "db1-06-pwd");
// TODO: set auto-commit off
} catch (SQLException sqe){
System.out.println("Caught SQL Exception: " + sqe);
}
return conn;
}
static boolean printRanking(Connection conn, String season) {
System.out.printf ("#rank%12s%14s%14s%14s%14s%14s%14s%14s\n", "club",
"games", "points", "won", "draw", "lost", "scoredGoals", "concededGoals");
try {
PreparedStatement st = conn.prepareStatement(getRanking);
st.setString(1, season);
ResultSet rs = st.executeQuery();
for(int j=1; rs.next(); j++){
System.out.printf ("% 3d", j);
for(int i=1; i<=8; i++)
System.out.printf ("%14s", rs.getString(i));
System.out.printf ("\n");
}
} catch (SQLException sqe){
System.out.println("Caught SQL Exception: " + sqe);
return false;
}
return true;
}
// falsify the database to make it appear a player got a red card:
// * insert a red card event (must find a unique eventID first)
// * remove all later events of that player
// * adjust the game result if he had scored
static boolean zapPlayer(Connection conn, int gameID,
int playerOut, int minute) {
return true;
}
static int getGame(Connection conn,
String home, String visitor, String season) {
int gameID = -1;
try {
PreparedStatement st = conn.prepareStatement(getGame);
st.setString(1,home);
st.setString(2,visitor);
st.setString(3,season);
ResultSet rs = st.executeQuery();
if (rs.next()) {
gameID = rs.getInt(1);
}
} catch (SQLException sqe) {
System.out.println("Caught SQL Exception: " + sqe);
}
return gameID;
}
static int getPerson(Connection conn, String name) {
int personID = -1;
try {
PreparedStatement st = conn.prepareStatement(getPerson);
st.setString(1,name);
ResultSet rs = st.executeQuery();
if (rs.next()) {
personID = rs.getInt(1);
}
} catch (SQLException sqe){
System.out.println("Caught SQL Exception: " + sqe);
}
return personID;
}
public static void main(String[] args) {
Connection conn = connect();
if (conn == null) return;
int gameID = getGame(conn, "Ajax", "FC Twente", "2010-2011");
int DeJong = getPerson(conn, "Siem de Jong");
if (zapPlayer(conn,gameID,DeJong,20)) {
// TODO: make sure the results get committed
printRanking(conn, "2010-2011");
}
}
}