zapytanie do serwera SQL

0

Witam, mam pytanie w sql tworze zapytanie select które w managment studio mi działa i zwraca mi wartość np 14 jednak kiedy wypisuje to w javie

try{
        queryString = "select \n" +
            "(select dbo.wyznaczenieUrlopu(zatrudniony_od , staz_pracy_miesiecy) from urlop\n" +
            "where ID_osoby = "+idWysylajacego+") - (select sum(a.dni) as urlop_wykorzystany from\n" +
            "(select dbo.HolidaysDays (data_od , data_do) as dni, id_wysylajacego\n" +
            "from Wiadomosc\n" +
            "where tresc not in ('BRAK ZGODY') and id_wysylajacego = "+idWysylajacego+"\n" +
            ")a group by a.id_wysylajacego) as pozostalo";
        ResultSet rs = db.statement.executeQuery(queryString);
            
               for (int i = 0; rs.next(); i++)
               {
                   urlopTable.getModel().setValueAt(rs.getInt("pozostalo"), 0, 2);
               }
        } catch (Exception e)
                        {
                            e.printStackTrace();
                        }

to wyrzuca mi inny wynik "0".
Ktoś mi powie dlaczego? Co jest źle?

2
  1. SQLinjection aż piszczy w tym kodzie. Przeczytaj co to są Prepared Statements...
  2. Trudno powiedzieć co dokładnie jest powodem, ale jeśli nic się nie wysypuje to takie wynik zwraca ci baza danych.
1
  1. Używaj prepared statement do tworzenia zapytań SQL z parametrami. Dodawianie Stringów, to droga do SQL injection.
  2. Sprawdź, co zwraca rs.getInt("pozostalo") i czy nie machnąłeś się gdzieś w nazwach.
1

podejrzewam, że jak w większości języków executeQuery jest do zapytań modyfikujących dane a do zapytań wybierających dane powinno być coś jak openQuery

0

Mam jeszcze jedno pytanie: jak mogę pozbyć się błędu java.lang.NullPointerException kiedy próbuje dać zapytanie zaraz po odpaleniu nowego okna w javie?

oto kod:

public OknoKierownika() {
        initComponents();
       wypisanieComboBox();
    }


 public void wypisanieComboBox (){
        try{
             
                queryString = "select Imie, Nazwisko from Osoby where id_stanowisko = 3";
                rs = db.statement.executeQuery(queryString);                 
                listaPracownikowComboBox.removeAllItems();
                while (rs.next()){
                        listaPracownikowComboBox.addItem(rs.getString("Imie")+ " " + rs.getString("Nazwisko"));
                }
            }catch (Exception e)
                        {
                            e.printStackTrace();
                        }
    }

ktoś pomoże??

0

GDZIE dostałesz to NPE? Zresztą po prostu postaw breakpoint w tym kodzie, włącz debuger i zobacz co jest nullem i czemu.

0

nullem pokazuje mi na executequery ale czemu to nie mam pojecia

0

Znaczy ze db albo db.statement jest nullem. Nie zgaduj tylko UŻYJ DEBUGERA. On nie gryzie.

0

dodałem załącznik z zrzutami obrazu jednak nie wiem czemu wyświetla mi jako null

1

Czy ty jesteś poważny? Jeszcze nagraj nam video. Skoro widzisz co jest nullem to teraz idziesz i sprawdzasz dlaczego. Może zapomniałeś o jakimś new ... dla tej zmiennej?

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