QUESTO è IL DATABASE CHE HO CREATO SU MYSQL:
create database restaurant;
use restaurant;
create table tables(
id_table int primary key auto_increment,
seats_n int not null,
seats_available int not null
);
create table users(
username varchar(15) primary key,
password varchar(15) not null,
full_name varchar(50) not null,
telephone varchar(30) not null,
email varchar(30) not null
);
create table reservations(
reservation_id int auto_increment primary key,
client_id varchar(3) not null,
table_ int not null,
reservation_date timestamp not null,
foreign key(client_id) references users(username),
foreign key(table_) references tables(id_table)
);
create table environment( #Struttura del ristorante
id_restaurant int primary key,
capacity int not null check (capacity>0),
telephone_restaurant varchar(30) not null
);
PROBLEMI:
1)SU ECLIPSE NON SO COME USARE LA TABELLA ENVIRONMENT E COME COLLEGARLA.
2)LA REGISTRAZIONE VA A BUON FINE, MA UNA VOLTA CHE EFFETTUO IL LOGIN, HO ERRORE 500 E NON RIESCO A VEDERE I TAVOLI PRENOTATI DALL'UTENTE (esattamente l'ArrayList <Table> che ho usato per inserire i tavoli prenotati, tramite il metodo "getReservedTables(String username)", risulta vuoto). Di seguito riporto il codice scritto nella classe DbConnection:
package db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import model.User;
import model.Table;
public class DbConnection {
private String url = "jdbc:mysql://localhost:3306/restaurant?serverTimezone=UTC";
private String user = "root";
private String pass = "ciao";
private Connection conn;
public DbConnection() throws SQLException {
conn = DriverManager.getConnection(url, user, pass);
}
public void insertUser(String username, String password, String fullName, String telephone, String email) throws SQLException {
String insert = "insert into users values(?,?,?,?,?)";
PreparedStatement ps = conn.prepareStatement(insert);
ps.setString(1, username);
ps.setString(2, password);
ps.setString(3, fullName);
ps.setString(4, telephone);
ps.setString(5, email);
ps.executeUpdate();
public User getUser(String username) throws SQLException {
String select = "select * from users where username = ?"; //Creiamo una select parametrizzata in cui estraiamo tutti i dati di un utente che ha una determinata username
PreparedStatement ps = conn.prepareStatement(select); //preparedStetemnt lo si prende da connessione e gli diamo come ingresso SELECT
ps.setString(1, username);
ResultSet rs = ps.executeQuery();
User user = null;
while(rs.next()) { //Se c'è un risultato, utenza verrà creato
user = new User();
user.setUsername(rs.getString("username")); //Setto username prendendo l'username dal db
user.setPassword(rs.getString("password")); //Nel password dell'utenza metteremo il valore del record estratto corrispondente al campo password
user.setFullName(rs.getString("full_name")); //Setto fullnome prendendo il nome dal db
user.setTelephone(rs.getString("telephone"));
user.setEmail(rs.getString("email"));
}
return user;
}
public ArrayList<Table> getReservedTables(String username) throws SQLException{
String query = " select * from reservations r, tables t where r.table_=t.id_table and user=?";
PreparedStatement ps = conn.prepareStatement(query);
ps.setString(1, username);
ResultSet rs = ps.executeQuery();
ArrayList<Table> tablesList = new ArrayList<Table>();
while(rs.next()) {
Table table = new Table();
table.setIdTable(rs.getInt("id_table"));
table.setSeatsN(rs.getInt("seats_n"));
table.setSeatsAvailable(rs.getInt("seats_available"));
tablesList.add(table);
}
return tablesList;
}