Netbeansben mssql tábla megjelenítés

Netbeansben mssql tábla megjelenítés
2008-03-21T09:03:19+01:00
2008-04-03T00:15:39+02:00
2022-11-08T15:20:43+01:00
T_tamas
Sziasztok

Ez valószínű egy egyszerű kérdés lesz, de én még most ismerkedek vele. Netbeansben egy táblázatban (jTable) meg akarok jeleníteni egy mssql táblát. Ha sikerül mondjuk egy resulsetbe letölteni az adatokat, hogyan tudom azt a táblázathoz hozzárendelni, NETBEANS-ben?
Mutasd a teljes hozzászólást!
Készítesz egy DefaultTableModel objektumot, majd ehez hozzáadod a sorokat amiket resultset-ből nyersz ki. Ha ezzel megvagy akkor a tábládra beállítod ezt a modellt:

JTable table = new JTable(); DefaultTableModel model = new DefaultTableModel(); // hozzáadod az oszlopokat: model.addColumn(); // majd a sorokat model.addRow(); // beállítod a táblára ezt a modelt: table.setModel( model );
Mutasd a teljes hozzászólást!

  • Huhhh!

    Jót kérdeztél, pont nemrég töltöttem el ezzel egy estét... :)

    Előfeltétel: persisztens objektumokkal dolgozz. Nem perzisztens objektumokra szerintem a lenti leírás nem működik.

    Szóval amikor pakolod össze a form szerkesztőben a formot, jobb klikk a táblázatra, és van egy bind menüpont. Ezen belül elements. Ekkor van lehetőséged arra, hogy egy adatbázis tábla alapján feltöltse adatokkal. Innentől a többi egyértelmű.

    Viszont itt kezdődik a probléma is. Nálam DerbyDB alatt a logikai típust mindenáron valami Serialized-nek ismerte fel, és egyszerűen nem lehetett kezelni. Úgyhogy a következőt csináltam:

    Az Object Inspectorban van egy olyan rész, hogy Other components.
    Itt Add from palette->Java persistence.

    Itt van három lehetőség, mindháromra szükség van a következő sorrendben:
    I. Létrehozol egy Entity Managert.
    II. Létrehozol egy Queryt.
    III. Létrehozol a Queryd alapján egy list-et. (ezt viszont már olyanra generálja, hogy ezzel lehet bindolni.. )
    És a csavar: a lista alapjában Objecteket tartalmaz. Ezt kis keresgéléssel a lista készítésénél tudod típuskényszeríteni olyan osztályra, amire akarod.

    A kapott listát már bindolhatod is...


    Mindössze ennyi... :)
    Morzel
    Mutasd a teljes hozzászólást!
  • Ja, még valami: ha valaki tud egyszerűbb módszert, az szóljon pls...

    Morzel
    Mutasd a teljes hozzászólást!
  • Készítesz egy DefaultTableModel objektumot, majd ehez hozzáadod a sorokat amiket resultset-ből nyersz ki. Ha ezzel megvagy akkor a tábládra beállítod ezt a modellt:

    JTable table = new JTable(); DefaultTableModel model = new DefaultTableModel(); // hozzáadod az oszlopokat: model.addColumn(); // majd a sorokat model.addRow(); // beállítod a táblára ezt a modelt: table.setModel( model );
    Mutasd a teljes hozzászólást!
  • Igen, ezt el is felejtettem. Ha nincs szükség perzisztenciára, ennyi is elég. Bár így természetesen a rekordokon végzett műveleteknél kell többet dolgozni.

    Morzel
    Mutasd a teljes hozzászólást!
  • Köszönöm a gyors válaszokat, kipróbálom őket
    Mutasd a teljes hozzászólást!
  • Nem jutok el odáig, mert mindíg kijön ez a hibaüzenet:
    "com.microsoft.sqlserver.jdbc.SQLServerException: The requested operation is not supported on forward only result sets."
    A kód, ahol a
    driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    connectionUrl = "jdbc:sqlserver://localhost:"+port+";database="+database+";";
    és a getConnect() a connect által beállított Connection
    public void connect() {
    Class.forName(driver).newInstance();
    conn =DriverManager.getConnection(connectionUrl,"sa","");
    }
    st = kapcsolat.getConnect().createStatement();
    rs = st.executeQuery(_sqlmondat);

    Mit ronthattam el?
    Mutasd a teljes hozzászólást!
  • Biztos hogy ezeknél a soroknál kapod ezt a hibaüzenetet?
    Nekem inkább úgy tűnik hogy egy ResultSet-es utasítással van a probléma.
    Talán pozicionálsz vele, vagy nem tudom.
    Próbáld ki ezt:

    st = kapcsolat.getConnect().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
    Mutasd a teljes hozzászólást!
  • köszönöm, ha hazaérek, mergnézem!
    Amúgy egy utasítást van a resultseten egy ".first()"
    ami végül is pozícionálás. Nem is tudtam, hogy nem lehet pozícionálni............
    Mutasd a teljes hozzászólást!
  • A helyzet az, hogy a resultSet 0 rekordos lesz, a connection rendben lemegy a selectet amit kiadok, azt meg 0 rekordal adja vissza, pedig van benne rekord bőven
    Mutasd a teljes hozzászólást!
  • Select-ed biztos jó?
    Mivel resultset sosem lesz null, én arra gondolok hogy ott ronthattál el valamit.
    Próbáld ki hogy mssql serverbe beírod ugyanezt a selectet és ha ott sem kap vissza rekordot akkor ott rontottál el valamit. :)
    Mutasd a teljes hozzászólást!
  • A selectem jó volt....
    Viszont megoldódott a probléma.
    Valamiért elszált, ha azt adtam ki, hogy first() vagy beforeFirst() és valamiért, ha kírattam volna a resultset rekordszámát, akkor 0-t írt ki, viszont egy while ciklussal mint kiderült végig tudok menni rajta és nem ad hibát.
    Végig, benne volt az adat, csak valamiért néhány metódus nem működik, vagy valamit be kell állítani ahoz, hogy működjönnn.

    Köszönöm a segítséget!
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd