Witam wszystkich,
Jestem początkującą osobą jeśli chodzi o javę, więc proszę o wyrozumiałość. Mam do zrobienia projekt na zaliczenie z materiału, którego jeszcze nawet nie robiliśmy niestety, a ciężko mi to ogarnąć. Mam stworzyć małą bazę danych w PostgreSQL i napisać aplikację CRUD wraz z GUI do jej obsługi.
Mam tylko dwie tabele:
Klienci(id_klienta jako INT klucz główny, imię, nazwisko,adres, numer_tel)
Wizyta(id_wizyty SERIAL jako klucz główny, id_klienta jako klucz obcy,data,wykonana_praca, cena)
Mam nadzieję, że chociaż układ bazy danych jest ok.
Ale mam problem:
nie mam pojęcia jak rozplanować klasyw javie, znalazłem sterownik do łączenia się z PostgreSQL i kod do sprawdzenia czy działa połączenie i to jest jedna klasa, polączenie działa ok.
Stworzyłem klasę Main, chciałem utworzyć te tabele, ale nie wiem jak się zabrać. Mam problem z inną klasą, którą próbowałem zrozumieć, znalazłem ją na jednymz tutoriali, ale nie wiem jak ją zmienić na swoje potrzeby:
package Hairdresser;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
import javax.naming.ConfigurationException;
public class DBConnectionFactory {
private static String connectionURI;
private static boolean isPrepared = false;
private static String connectionClass;
private static void prepare() throws ConfigurationException {
Properties properties = new Properties();
try {
properties.load(new FileInputStream("db.configuration"));
} catch (FileNotFoundException e) {
throw new ConfigurationException(e);
} catch (IOException e) {
throw new ConfigurationException(e);
}
if (properties.containsKey("connection.uri")) {
connectionURI = properties.getProperty("connection.uri");
} else {
throw new ConfigurationException("brak klucza connection.url");
}
if (properties.containsKey("connection.class")) {
connectionClass = properties.getProperty("connection.class");
} else {
throw new ConfigurationException("brak klucza connection.class");
}
try {
Class.forName(connectionClass);
} catch (ClassNotFoundException e) {
throw new ConfigurationException("brak sterownika " + connectionClass);
}
isPrepared = true;
}
public static Connection getConnection() throws ConfigurationException {
if (!isPrepared)
try {
prepare();
} catch (ConfigurationException e) {
e.printStackTrace();
}
try {
Connection connection = DriverManager.getConnection(connectionURI);
return connection;
} catch (SQLException e) {
throw new ConfigurationException(e);
}
}
}
wyskakują mi errory przy każdym: ConfigurationException(e) - constructor undefined
nie wiem jak zmienić i gdzie wpisać ewentualnie moją ścieżkę do bazy jeśli o to chodzi...
próbowałem utworzyć tabele w bazie danych używając klasy Main:
package Hairdresser;
import java.sql.Connection;
public class Main {
public static void main(String[] args) throws Exception {
Connection conn = DBConnectionFactory.getConnection();
String clientsQuery = "CREATE TABLE Cients ( client_id INT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), " +
"firstname VARCHAR(50), surname VARCHAR(50), address VARCHAR(50), phone_no VARCHAR," +
"PRIMARY KEY (client_id) )";
String visitQuery = "CREATE TABLE Visit ( visit_id INT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1)," +
" client_id INT, date DATESTAMP, what_done VARCHAR, extra_info VARCHAR(50), price INT, PRIMARY KEY (visit_id), FOREIGN KEY(client_id) )";
conn.createStatement().execute(clientsQuery);
conn.createStatement().execute(visitQuery);
conn.close();
}
}
ale oczywiście nie działa nic bo jest jakiś problem z połączeniem.....
aczkolwiek test następującym kodem działa:
package Hairdresser;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class JDBCConnectionTest {
public static void main(String[] argv) {
System.out.println("-------- PostgreSQL "
+ "JDBC Connection Testing ------------");
try {
Class.forName("org.postgresql.Driver");
} catch (ClassNotFoundException e) {
System.out.println("Where is your PostgreSQL JDBC Driver? "
+ "Include in your library path!");
e.printStackTrace();
return;
}
System.out.println("PostgreSQL JDBC Driver Registered!");
Connection connection = null;
try {
connection = DriverManager.getConnection(
"jdbc:postgresql://127.0.0.1:5432/Hairdresser", "postgres",
"Jurijj11");
} catch (SQLException e) {
System.out.println("Connection Failed! Check output console");
e.printStackTrace();
return;
}
if (connection != null) {
System.out.println("You made it Julian! You are a genius...take control your database now!");
} else {
System.out.println("Failed to make connection!");
}
}
}
przepraszam za moją amatorkę ale to naprawdę nie moja dziedzina.
czy ktoś mógłby mi udzielić jakichś wskazówek co robię źle i jak zorganizować mój kod i jakie klasy, podobno powinienem mieć osobne klasy do każdej tabeli ale nawet się za to nie biorę bo już utknąłem... a jeszcze mnie czeka CRUD i GUI a juz mam problemy. sam nie wiem co ma być gdzie i w jakich klasach.
jeśli ktoś byłby w stanie mi pomóc byłoby wspaniale, albo może ktoś ma jakiś tutorial dla naiwnych jak taki projekt zrobić krok po kroku.
Z góry dziękuję.
Julian