rozklad lotow - tablica

0

Witam

Mam ma problem z modulem ktory jest czescia mojej pracy dyplomowej.
Modul ma za zadanie w realnym czasie na podstawie danych pobranych z bazy wyswietlac aktualnie
odbywajace sie loty ,opoznione oraz inne dodatkowe informacje.

Algorytm wymyslilem raczej pracy porownujacy godzine pobrana z komputera oraz te z bazy jesli daty
sa rowne lot jest wyswietlany.

Wszystko bedzie realizowane w petli while.

Na razie niby pobiera daty ale jak dla niego nie sa one identyczne probowalem na rozne sposoby.

Date jak i String nie dzialaja albo ja cos zle rozumuje. Ew stosuje zly algorytm.

Z gory dziekuje za podpowiedzi

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.JOptionPane;

public class DisplayDataRealTime {
	
	private ResultSet show;
	String driver = "com.mysql.jdbc.Driver";
	String url = "jdbc:mysql://localhost:3306/baza_lotow";
	String username="root";
	String password = "";
	String rightDate;
	String currentDate,hour,currentDate2;
	boolean compare;
	
	
	public void connectDB() {
		
		DateFormat dateForm = new SimpleDateFormat("yyyy-MM-dd");
		Date date = new Date();
		currentDate = dateForm.format(date)+"\n\n";
		currentDate2 = currentDate.toString();
		
		
		
		String godzina_odlotu;
		
		
		try {
			Class.forName(driver);
			Connection dataConnect = DriverManager.getConnection(url,username,password);
			String dataRequest = "select * from przyloty where godzina_odlotu='"+currentDate+"'";
			
			PreparedStatement prepare = dataConnect.prepareStatement(dataRequest);
			show = prepare.executeQuery();
			
			int a = 0;
			
			while(show.next()) {
				
				System.out.println(show.getString("ID"));
				System.out.println(show.getString("numer_lotu"));
				System.out.println(show.getString("odlot"));
				System.out.println(show.getString("przylot"));
				
				hour = show.getString("godzina_odlotu");
				rightDate = hour.toString();
				
				System.out.println(rightDate);
				System.out.println(currentDate2);
				
				/*rightDate = "2017-09-09";
				currentDate2 = "2017-09-09";*/
				
				
				if(rightDate.equals(currentDate2)) {
					System.out.println("YES");
				}
				
				}
			
		}catch(Exception e)
		{
			JOptionPane.showMessageDialog(null, e.getMessage(),"ERROR",JOptionPane.ERROR_MESSAGE);
		}
	}

	public static void main(String[] args) {
		
		DisplayDataRealTime display = new DisplayDataRealTime();
		display.connectDB();

	}

}
1
  1. Jako jaki typ danych jest przechowywana godzina_odlotu w mysql?
  2. Dla zasady nie sklejaj strngów do SQL
    String dataRequest = "select * from przyloty where godzina_odlotu='"+currentDate+"'";
    Użyj preparedstatement zgodnie z przeznaczeniem. Uużyj ? w zapytaniu i ustaw potem parametr:
    https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html
    (To ważne z punktu widzenia bezpieczeństwa : nie ma nic gorszego niż "posklejane stringi" z SQL. W tym przypadku niebezpieczeństwa nie ma - ale warto żebyś się pilnował zawsze i nauczył).
  3. Nie wiem jak ma być równe jak twoje currenDate zawiera dwa entery.
  4. Porównujesz currentDate - które oprócz tego, że ma te dwa entery na końcu jest datą... z godziną (choć nie wiem co jest mysql). Nie trzyma to się nijak kupy.
0

godzina_odlotu jest typu Date

Nie wiem jak tu wypatrzyłeś dwa Entry w currentDate jeśli do zmiennej tej ma sie zaciągać data z systemu ew została niewłaściwie pobrana. wartosc pola godzina_odlotu musiałem skrócić aby łatwiej było mi ją porównać z datą pobraną z systemu.

Ew stosuje zły mechanizm aby w czasie rzeczywistym wyświetlać loty które aktualnie sie odbywają.

0
delform17 napisał(a):

godzina_odlotu jest typu Date

Nie wiem jak tu wypatrzyłeś dwa Entry w currentDate jeśli do zmiennej tej ma sie zaciągać data z systemu ew została niewłaściwie pobrana. wartosc pola godzina_odlotu musiałem skrócić aby łatwiej było mi ją porównać z datą pobraną z systemu.

Nie Entry tylko entery i są tutaj:

currentDate = dateForm.format(date)+"\n\n";

1 użytkowników online, w tym zalogowanych: 0, gości: 1