zapytanie do serwera SQL

zapytanie do serwera SQL
RC
  • Rejestracja:około 6 lat
  • Ostatnio:ponad rok
  • Postów:74
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

Kopiuj
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?

edytowany 2x, ostatnio: cerrato
AK
Jako programista i wdrożeniowiec rzeczywistych systemów kadrowych jestem niepomiernie zdziwiony próbą implementacji jedynie w SQL-u
AK
nie pisz na priva. Po pierwsze my nie wiemy co siedzi w dbo.wyznaczenieUrlopu(). Po drugie umieszczenie zasad/reguł biznesowych/kodeksowych w SQL ORAZ Javie to zaraza. To jest z produkcji czy studenckie wprawki?
RC
to na studia potrzebuje i chce większość poleceń wyliczeń zrobić w sql ale java mi nie chce tego pokazywać
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
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.

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
Koziołek
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:dzień
  • Lokalizacja:Stacktrace
  • Postów:6822
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.

Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
abrakadaber
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:9 miesięcy
  • Postów:6610
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


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
Shalom
nope, jest executeUpdate do tych pierwszych ;)
KamilAdam
do tych drugich jest executeUpdate. To jest porządny jezyk ze statycznym typowaniem,więc trudno takie rzeczy pomylić :P
RC
  • Rejestracja:około 6 lat
  • Ostatnio:ponad rok
  • Postów:74
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:

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

Kopiuj

 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??

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

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


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
RC
  • Rejestracja:około 6 lat
  • Ostatnio:ponad rok
  • Postów:74
0

nullem pokazuje mi na executequery ale czemu to nie mam pojecia

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

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


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
RC
  • Rejestracja:około 6 lat
  • Ostatnio:ponad rok
  • Postów:74
0

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

  • 1.jpg (211 KB) - ściągnięć: 220
Koziołek
Pokaż jeszcze kod, który tworzy db i db.statement
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
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?


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.