Java problem z rzutowaniem

Odpowiedz Nowy wątek
2018-11-02 18:55
0

Hej!
Mam do napisania body method w Javie na projekt na studia. Mam klasę DB która jest odpowiedzialna za łączenie się z bazą danych (mssql) i w niej funkcję:

public List<Object[]> Select(String sel)
    {
        ResultSet rset;
        List<Object[]> lista = new ArrayList<Object[]>();
        try
        {
            Statement stmt = con.createStatement();
            rset = stmt.executeQuery(sel);
            ResultSetMetaData meta = rset.getMetaData();
            int numCol = meta.getColumnCount();
            while (rset.next())
            {
                Object[] tupla = new Object[numCol];
                for(int i=0; i<numCol;++i)
                {

                    tupla[i] = rset.getObject(i+1);
                }
                lista.add(tupla);

            }
            rset.close();
            stmt.close();
        }
        catch (SQLException ex)
        {
            throw new Error("Error en el SELECT: " + sel+ ". " + ex.getMessage());
        }       

        return lista;
    }

Oraz klasę Usuario (zajęcia w języku hiszpańskim, dont judge) z metodą:

public static List<Usuario> ListaUsuarios()
    {
        BD bd = new BD(BD_SERVER, BD_NAME);
        List<Object[]> var = bd.Select("SELECT * FROM tUsuario;");
        List<Usuario> myList = new ArrayList<>();;
        //tutaj próbowałem rzutowania ale mi nie wychodziło nic :c

        return myList;
    }

Potrzebuje listę z pierwszej metody przenieść do listy w drugiej metodzie, niestety nie działa żadne rzutowanie ani nic z tych rzeczy ( bądź robię to źle). Może ktoś pomóc? Chodzi o to aby lista użytkowników (Usuarios) pobrana z bazy danych w klasie DB była zwracana w metodzie ListaUsuarios().

edytowany 1x, ostatnio: Marcin Orzelowski, 2018-11-02 18:56

Pozostało 580 znaków

2018-11-02 19:13
0

WTF? Jak ty to chciałes rzutować? Robisz dziwne rzeczy, zamiast wybierać List<Object[]> z jakiegos generycznego selectecta zrób normalne DAO w którym będziesz miał zahordkowany SQL (oczywiscie nie concatuj parapemtrów przez dodawanie Stringow tylko skorzystaj z parametrów), a jak Ci przeszkadza boilerplatowość JDBC zwykłego skorzystać z JDBCTemplate...


Nie pomagam przez PM. Pytania zadaje się na forum.

Pozostało 580 znaków

2018-11-02 19:16
0

Sęk w tym, że dostałem takie metody i nie mogę ich za bardzo modyfikować, jedyne (albo aż) co muszę zrobić to przerzucić listę z pierwszej metody tak aby była jako result w drugiej metodzie. Niestety nie wiem za bardzo jak to zrobić

Pozostało 580 znaków

2018-11-02 19:25
1

To komuś musiały nieźle wjechać piguły, że każe rzutować listę tablic Object na listę jakiejś klasy.

Można by było to jedynie karkołomnie przemapować, ale bez wiedzy o klasie ciężko wróżyć.

edytowany 2x, ostatnio: Michał Sikora, 2018-11-02 19:48

Pozostało 580 znaków

2018-11-02 20:34
Trzeźwy Kaczor
1

to co masz zrobic nie rozni sie bardzo od sytuacji w ktorej sam musialbys wczytywac dane z bazy przy uzyciu jdbc. tylko masz troche latwiej bo nie musisz dotykac sie do bazy danych, wiec nie popsujesz tej czesci (np. tak jak popsul autor metody ktora dostales).

  • sam tworzysz selecta, wiec zakladam ze wiesz co wyciagasz z bazy i znasz typy
  • dostajesz tablice o takim rozmiarze ile kolumn sam pobrales i o typach ktore znasz
  • masz obiekt User (zajecia z jezyku hiszpanskim nie upowazniaja do nazywania klas/metod/zmiennych po hiszpansku) ktory zapewne ma jakies pola i konstruktor ktory je ustawia
  • czyli wystarczy ze dla kazdego wiersza (element w List) pobierzesz wartosc z kazdej kolumny (element z Object[]) i przekazesz ja (bez rzutowania sie nie obedzie) do konstruktora klasy User

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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