Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Prikaz sadrzaja neke baze u jTable?

[es] :: Java :: Prikaz sadrzaja neke baze u jTable?

[ Pregleda: 3901 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Shejn
Srbija

Član broj: 11830
Poruke: 232
*.dialup.neobee.net.



Profil

icon Prikaz sadrzaja neke baze u jTable?10.10.2005. u 09:25 - pre 228 meseci
Da li bi neko mogao da mi pomogne kako se prikazuje sadrzaj neke baze u tabeli. Ovde dole je kod kojim se pri klik na Button1 konektujem na bazu i sada bi trebalo, pretpostavljam, da se u while petlji doda deo koji se tice tabele.

Code:

private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
PreparedStatement i_PreparedStatement = null;
        ResultSet i_ResultSet = null;
        Connection conn = null;
        try {
               Class.forName("org.postgresql.Driver");
               conn =   DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/probna" , "postgres", "");
                if( conn != null ) {
                JOptionPane.showMessageDialog(null, "Konektovali smo se na Bazu!" );
                i_PreparedStatement = conn.prepareStatement("SELECT * FROM table");
                i_ResultSet = i_PreparedStatement.executeQuery();
                while(i_ResultSet.next()){
                    
                   
                   
                }
            }
            conn.close();
        }catch (Exception sqlEx) {
            System.out.println("Konekcija nije moguca, a evo i zasto (stack trace): ");
            sqlEx.printStackTrace();
            System.exit(1);
        }
    }


Pozdrav . . .
 
Odgovor na temu

x VITA x
Beograd

Član broj: 41277
Poruke: 57
*.sbb.co.yu.



Profil

icon Re: Prikaz sadrzaja neke baze u jTable?10.10.2005. u 15:27 - pre 228 meseci
ajde da predpostavimo da su kolone koje je * vratila username ,pass i id
Code:

Vecor data= new Vector();

while(i_ResultSet.next()){
                    Vector rowData = new Vector();

                    data.add(rowData);

                    rowData.add(i_ResultSet.getString("username"));           
                    rowData.add(i_ResultSet.getString("pass"));           
                    rowData.add(i_ResultSet.getInt("id"));           
                    
                   
                   
}

Vector colNames = new Vector();

colNames.add("username");
colNames.add("pass");
colNames.add("id");

JTable table = new JTable(data,colNames);
panel.add(table);
table.setVisible(true);


UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. - Dennis Ritchie
 
Odgovor na temu

Shejn
Srbija

Član broj: 11830
Poruke: 232
*.dialup.neobee.net.



Profil

icon Re: Prikaz sadrzaja neke baze u jTable?11.10.2005. u 10:44 - pre 228 meseci
x VITA x , hvala na pomoci, ali i dalje mi neke stvari nepolaze za rukom. Posto sam tek poceo da se bavim Javom mislim da bi bilo bolje da ti ovde okacim svoj kod pa da ti pogledas nego da ti sad ovde objasnjavam u cemu je problem (sto uzgred budi receno i ne znam).
Hvala jos jednom na pomoci i razumevanju.
Poz.
Prikačeni fajlovi
 
Odgovor na temu

x VITA x
Beograd

Član broj: 41277
Poruke: 57
*.sbb.co.yu.



Profil

icon Re: Prikaz sadrzaja neke baze u jTable?11.10.2005. u 11:39 - pre 228 meseci
evo sredih ti da radi..

morao sam da ubacim i svoj driver i username za bazu (posto nemam postgre)

i posto sam radio u eclipse-u promenio sam ti layout tako da sad ne koristi netbeansov vec standardni layout koji ide uz jdk...malo kod izgleda jednostavnije ....


Code:

/*
 * Imenik.java
 *
 * Created on October 7, 2005, 9:28 AM
 */

package imenik;
import java.util.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;

import java.awt.BorderLayout;
import java.sql.*;

/**
 *
 * @author  Administrator
 */
public class Imenik extends javax.swing.JFrame {
    
    /** Creates new form Imenik */
    public Imenik() {
        initComponents();

    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
    private void initComponents() {
        
        jScrollPane1 = new javax.swing.JScrollPane(jTable1);
        jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        jScrollPane1.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
 
        
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  
        setPrikaz();
        setIzlaz();
        
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(Prikaz, BorderLayout.NORTH);
        getContentPane().add(Izlaz, BorderLayout.SOUTH);
        getContentPane().add(jScrollPane1, BorderLayout.CENTER);

       
        pack();
    }
    // </editor-fold>//GEN-END:initComponents

    private void setIzlaz() {
        Izlaz.setText("Izlaz");
        Izlaz.setMaximumSize(new java.awt.Dimension(73, 23));
        Izlaz.setMinimumSize(new java.awt.Dimension(73, 23));
        Izlaz.setPreferredSize(new java.awt.Dimension(73, 23));
        Izlaz.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                IzlazMouseClicked(evt);
            }
        });
    }

    private void setPrikaz() {
        Prikaz.setText("Prikaz");
        Prikaz.setMaximumSize(new java.awt.Dimension(73, 23));
        Prikaz.setMinimumSize(new java.awt.Dimension(73, 23));
        Prikaz.setPreferredSize(new java.awt.Dimension(73, 23));
        Prikaz.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                PrikazMouseClicked(evt);
            }
        });
    }
       
    private void IzlazMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_IzlazMouseClicked
        System.exit(0);
    }//GEN-LAST:event_IzlazMouseClicked
    
//                          P R I K A Z     P O D A T A K A
    
    private void PrikazMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_PrikazMouseClicked
        
        Vector            columnNames         = new Vector();
        Vector            data                = new Vector();       
        
        try {
            JOptionPane.showMessageDialog(null, "Konektovali smo se na Bazu!" );

            Class.forName(driverName2);
            Connection conn = DriverManager.getConnection(dbURL2 , user2, pass);
            
            
            //ovde se nalaza kolone username,id i phone... 
            //ako je tebi drugacije izmeni
            PreparedStatement ps  = conn.prepareStatement("SELECT * FROM imenik");
            ResultSet         res = ps.executeQuery();
            
            ResultSetMetaData md = res.getMetaData();
            int columns = md.getColumnCount();
            
            //  Get column names
            
            for (int i = 1; i <= columns; i++) {
                columnNames.addElement( md.getColumnName(i) );
            }
            
            //  Get row data
            
            while(res.next()){
                Vector row = new Vector();
            
                row.add(res.getInt("id"));
                row.add(res.getString("username") );
                row.add(res.getInt("phone"));
                
                data.add(row);
            }
                
            conn.close();
        }catch (Exception sqlEx) {
            sqlEx.printStackTrace();
        }
        
        //  Create table with database data
        
        jTable1.setModel( new DefaultTableModel(data, columnNames));
        jTable1.validate();
        validate();

 
    }//GEN-LAST:event_PrikazMouseClicked
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Imenik().setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton Izlaz   = new javax.swing.JButton();
    private javax.swing.JButton Prikaz  = new javax.swing.JButton();
    private javax.swing.JTable  jTable1 = new javax.swing.JTable();;
    
    private javax.swing.JScrollPane jScrollPane1;
    // End of variables declaration//GEN-END:variables
    

    private String driverName  = "org.postgresql.Driver";
    private String dbURL       = "jdbc:postgresql://127.0.0.1:5432/probna";
    private String user        = "postgres";
    private String pass        = "";


    private String dbURL2      = "jdbc:mysql://localhost/probna";
    private String user2       = "root";
    private String driverName2 = "com.mysql.jdbc.Driver";
}


UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. - Dennis Ritchie
 
Odgovor na temu

Shejn
Srbija

Član broj: 11830
Poruke: 232
*.dialup.neobee.net.



Profil

icon Re: Prikaz sadrzaja neke baze u jTable?11.10.2005. u 13:28 - pre 228 meseci
E super , to je to sto sam hteo ... za pocetak ;).

Kazi mi jos ovo , pri izlistavanju sadrzaja prikazuje mi se onoliko redova koliko ima trenutno unetih imena. Jel moguce postaviti nekako da mi se ispisuje uvek neki odredjeni broj redova npr. 16, bez obzira da li ima vise ili manje od 16( ako ima manje da se izliztaju prazni redovi)?
Jel moguce postaviti koje ce velicine da bude kolona, znaci da ne budu sve kolone iste?

Nemoj da pomislis da "teram mak na konac" :)) , ali ako moze ovo da se sredi bilo bi lepo.

Veliko HVALA i za ovo do sada ...
 
Odgovor na temu

x VITA x
Beograd

Član broj: 41277
Poruke: 57
*.sbb.co.yu.



Profil

icon Re: Prikaz sadrzaja neke baze u jTable?11.10.2005. u 14:14 - pre 228 meseci
pa pavi ti uvek mozes da stavis da je vektor sa podacima duzine 16 i da je ostatak prazan..znaci u onoj while petlji povecavac neki brojac i posle toga od tog broja do 16 pichish sve prazno tj. prazan string.

a za podesavanje kolona imas objasnjeno u java tutorijalu...
http://java.sun.com/docs/books/tutorial/index.html
konkretno za tabele
http://java.sun.com/docs/books.../uiswing/components/table.html

[Ovu poruku je menjao x VITA x dana 11.10.2005. u 15:22 GMT+1]

[Ovu poruku je menjao x VITA x dana 11.10.2005. u 15:24 GMT+1]
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. - Dennis Ritchie
 
Odgovor na temu

Shejn
Srbija

Član broj: 11830
Poruke: 232
*.dialup.neobee.net.



Profil

icon Re: Prikaz sadrzaja neke baze u jTable?17.10.2005. u 13:48 - pre 228 meseci
kada pokusam ovako nesto:
Code:

                while(i_ResultSet.next()){
                    Vector row = new Vector(columns);
                                                           
                    for (int i = 1; i <= columns ;i++)
                   {    
                        row.add(i_ResultSet.getString(i) );                      
                    }
                    data.add( row );
                    if (row.size()<=64) {  // broj celija
                        for(int j=columns; j<=18;j++){
                            row.add(j, " ");
                            data.add(row);
                        }
                        
                    } 


izbaci mi svaki red 16 puta, a trebao bi samo jednom a ostatak do 16 da budu prazni redovi.
 
Odgovor na temu

x VITA x
Beograd

Član broj: 41277
Poruke: 57
*.sbb.co.yu.



Profil

icon Re: Prikaz sadrzaja neke baze u jTable?18.10.2005. u 22:34 - pre 228 meseci
problem je sto ti dodajes
Code:

                while(i_ResultSet.next()){
                    Vector row = new Vector(columns);
                                                           
                    for (int i = 1; i <= columns ;i++){    
                        row.add(i_ResultSet.getString(i) );                      
                    }

                    if (row.size()<=64) {  // broj celija
                        for(int j=columns; j<=18;j++){
                            row.add(j, " ");
                        }
                    } 
                    data.add(row);
                }    




UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. - Dennis Ritchie
 
Odgovor na temu

Shejn
Srbija

Član broj: 11830
Poruke: 232
*.dialup.neobee.net.



Profil

icon Re: Prikaz sadrzaja neke baze u jTable?19.10.2005. u 08:54 - pre 228 meseci
Sa ovom ispravkom koju sam probao i koja bi logicno trebala da odradi posao, ne dodaje prazne redove nego kao i bez if (row.size()<=64). Znaci

Code:
row.add(j, " "); 

ocigledno ne radi ono sto sam ja mislio, odnosno da u j-tu celiju upisuje prazno mesto. Da ga nezeza slucajno onaj uslov:

Code:
while(i_ResultSet.next())



[Ovu poruku je menjao Shejn dana 19.10.2005. u 09:55 GMT+1]
 
Odgovor na temu

Shejn
Srbija

Član broj: 11830
Poruke: 232
*.dialup.neobee.net.



Profil

icon Re: Prikaz sadrzaja neke baze u jTable?21.10.2005. u 14:12 - pre 228 meseci
U redu je skontao sam.
 
Odgovor na temu

djokapeka

Član broj: 194
Poruke: 16
*.rcub.bg.ac.yu.

ICQ: 105620376


Profil

icon Re: Prikaz sadrzaja neke baze u jTable?02.11.2005. u 13:45 - pre 227 meseci
Ne bih da budem treca sisa na savrhenoj ribi, ali word of advice za rad sa bazom i tabelom:
Dakle prvo i osnovno pravilo je da tabela ne sme da bude direktno povezana na bazu nego se preporucuje da se iz baze Result Set pretvori u neki objekat a onda se vrednosti tog objekta ubacuju u tabelu na tako ti je baza konzistentna.
Drugo,dobra fora je da koristis database broker koji kad jednom napravis mozes da ga koristis bilo gde za bilo koju bazu i bilo koj program uz minimalne izmene a ako jos kao parametre u DB brokeru koristis objekte koji su instance unita koji nasledjuju sve klase(uf sad sam ga bas objasnio-ukratko radi se ogenerickim klasama) onda ti ije ni bitno koji objekat poziva neku metodu brokera jer on tada radi sa bilo kojom klasom,izvrasava odgovarajuci upit,nad odgovarajucom tabelo i vraca adekvatan razultat.Sve ovo je malo komplikovano objasniti ali nije tesko ukapiati ,a kad provalis foru mora da ti se svidi.....




Ma bezveze!
 
Odgovor na temu

rj444
Radomir Jakovljevic
Beograd

Član broj: 48212
Poruke: 354
*.rcub.bg.ac.yu.



Profil

icon Re: Prikaz sadrzaja neke baze u jTable?11.11.2005. u 00:23 - pre 227 meseci
Ako ti prethodna poruka mozda nije bila bas najjasnija, covek je hteo da ti kaze da treba da napravis jedan sloj softvera koji radi sa bazom a tvojoj aplikaciji vraca podatke, odnosno omogucava ti da postavljas upite bazi na isti nacin, bez obzira da li se dole ispod tog sloja nalazi MySQL, Postgres ili bilo koja druga baza. Razlika ce biti samo u tom sloju i sastojace se od minimanih izmena, dok tvoja aplikacija nece da se menja. A to treba izbegavati jer je skupo (oduzima dosta vremena).

Znaci: napravis jednu klasu npr. Kernel (tako je ja obicno nazivam) koja koja bi mogla da izgleda ovako:

Code:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Kernel {
    private Connection veza;
    private String host;
    private String baza;
    private String user;
    private String password;
    
    public Kernel(String host, String baza, String user, String password) throws NeuspesnaKonekcija {
          this.host=host;
          this.baza=baza;
          this.user=user;
          this.password=password;
          try {
            System.out.print("Ucitavanje Driver-a .............. ");
            Class.forName("org.gjt.mm.mysql.Driver").newInstance();
          } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Nije ucitan Driver");
            throw new NeuspesnaKonekcija("Nije ucitan Driver.");
        }
        System.out.println("OK");
        
        try{
            String urlBaze="jdbc:mysql://"+host+"/"+baza+"?user="+user+"&password="+password;
            System.out.print("Kreiranje konekcije .............. ");
            veza=DriverManager.getConnection(urlBaze);
            System.out.println("OK");            
        } catch (SQLException sqle) {
            sqle.printStackTrace();
            throw new NeuspesnaKonekcija("Neuspesno uspostavljanje konekcije sa bazom");
        }
        System.out.println("Veza sa bazom uspostavljena");
    }
    
    public ResultSet upitSelekcije(String upit) {
        ResultSet tabela=null;
        try {
            Statement statement=veza.createStatement();
            tabela=statement.executeQuery(upit);
        } catch (SQLException sqle) { sqle.printStackTrace(); } 
        return tabela;
    }
    
    public int upitIzmene(String upit) {
        int kod=-1;
        try {
            Statement statement=veza.createStatement();
            kod=statement.executeUpdate(upit);
        } catch (SQLException sqle) { sqle.printStackTrace(); }
        return kod;
    }
    
    public int brRedova(ResultSet rs) {
        int i=0;
        try {
            while (rs.next()) i++;
            rs.beforeFirst();
        } catch (SQLException sqle) { sqle.printStackTrace(); }
        return i;
    }
    
    
    public void zatvoriKonekciju() {
        if (veza!=null) {
            try {
                veza.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}


Ovo bi trebalo da radi ako imas instaliran MySQL i JDBC driver za njega
(mysql-connector-java-3.1.7-bin.jar fajl koji snimis u jdk_dir/jre/lib/ext/)

Ako menjas MySQL DBMS nekim dugim od cele aplikacije ces izmeniti samo ovaj fajl i to onaj red:
Code:

String urlBaze="jdbc:mysql://"+host+"/"+baza+"?user="+user+"&password="+password;

Takodje ces morati da dodas i novi jar fajl (u onaj ext dir.), a koji odgovara DBMS-u.

Pozdrav
 
Odgovor na temu

Shejn
Srbija

Član broj: 11830
Poruke: 232
*.dialup.neobee.net.



Profil

icon Re: Prikaz sadrzaja neke baze u jTable?16.11.2005. u 07:03 - pre 227 meseci
Hvala ljudi na pomoci ...
 
Odgovor na temu

[es] :: Java :: Prikaz sadrzaja neke baze u jTable?

[ Pregleda: 3901 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.