2010-11-24 3 views
0
import java.sql.*; 
import java.io.*; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import javax.swing.*; 
import java.awt.*; 
import javax.swing.table.*; 
import java.util.Vector; 

public class SimpleTable extends JFrame { 
public SimpleTable() { 
super("Simple JTable Test"); 
setSize(350, 200); 
//setLocation(250,300); 
int ColCount; 
int i; 


try 
{ 

Class.forName("com.mysql.jdbc.Driver"); 
    Connection con=DriverManager.getConnection("jdbc:mysql://localhost/employ_details","root",""); 
    java.sql.Statement stmt= con.createStatement(); 
    ResultSet rs= stmt.executeQuery("select * from employe_details "); 
ResultSetMetaData meta =rs.getMetaData(); 
ColCount=meta.getColumnCount(); 
String s1 = null; 
String s2 = null; 
String s3 = null; 
String s4 = null; 
String s5 = null; 
String s6 = null; 
String s7 = null; 
while (rs.next()) 
{ 

String [] record= new 
String[ColCount]; 




for (i=0; i<ColCount; i++) 
{ 

record[i]=rs.getString(i+1); 
s1= rs.getString("Employee_ID"); 
s2= rs.getString("Employee_Name"); 
s3= rs.getString("Contact_Number"); 
s4 = rs.getString("Address"); 
s5 = rs.getString("Email"); 
s6 = rs.getString("dob"); 
s7 = rs.getString("Sex"); 
} 
JTable jt = new JTable(new String[][]{{s1,s2,s3,s4,s5,s6,s7}}, new String[]{"Employee_ID","Employee_Name","Contact_Number","Address","Email","dob","Sex"}); 
JScrollPane jsp = new JScrollPane(jt); 
getContentPane().add(jsp,BorderLayout.CENTER); 
}} 
catch (Exception e) 
{ 
System.out.println("failure to connect " + e); 
return; //(exit(1)); 
} 
} 
public static void main(String args[]) { 
SimpleTable st = new SimpleTable(); 
st.setVisible(true); 
} 
} 

son seulement shopwing la dernière rangée dans la base de données. comment j'obtiens toutes les lignes dans la base de données à la JTable?java- problème de retriving de données mysql

Répondre

1

Votre code lit toutes les données mais il ne les stocke pas toutes, il contient uniquement les données de l'exécution de la dernière boucle.

Et de créer une table à partir de la dernière rangée afin qu'elle ne montre que la dernière rangée.

Essayez quelque chose comme

List<String> data = new ArrayList<String>(); 

que

while (rs.next()) 
{ 

String [] record= new 
String[ColCount]; 




for (i=0; i<ColCount; i++) 
{ 

record[i]=rs.getString(i+1); 
data.add(rs.getString("Employee_ID")); 
data.add(rs.getString("Employee_Name")); 
. 
. 
. 
data.add(rs.getString("Sex")); 
} 
JTable jt = new JTable(new String[][]{data.toArray()}, new String[]{"Employee_ID","Employee_Name","Contact_Number","Address","Email","dob","Sex"}); 
+0

alors comment puis-je stocker toutes les données? – Rince

+0

@Rince vérifier mise à jour –

+0

comment je stocke toutes les données – Rince

1

Vous Itère la ResultSet et pas stocker toutes les valeurs de retour par le ResultSet.

Votre s1 .. s7, par conséquent, détient la dernière valeur du jeu de résultats. Vous pouvez avoir s1[] .. s7[] pour contenir toutes les valeurs, par colonne, du jeu de résultats ou avoir une liste de toutes les valeurs dans l'ensemble.

Le meilleur moyen est de créer un objet POJO pour mapper votre entité (POJO) à votre table SQL.

+0

comment je crée POJO. – Rince

+0

POJO (Plain Old Java Object), est juste une classe Java simple. Dans votre cas, une classe avec des attributs avec des getters/setters représentant vos colonnes de table SQL. –

0

Il s'agit d'un problème plus facile si vous le divisez en étapes plus petites. Au lieu de mettre tout votre code dans une méthode principale, je vous recommande de les diviser en plusieurs classes plus petites. Concentrez-vous sur un, faites-le fonctionner, puis passez à l'étape suivante.

Votre premier problème est la récupération de données.

Java est un langage orienté objet: commence par une classe Employee.

package model; 

public class Employee 
{ 
    private String id; 
    private String name; 
    private String phone; 
    private String address; 
    private String email; 
    private Date birthday; 
    private Gender gender; 

// Constructors, getters/setters, equals, hashCode, toString and behavior follow. 
} 

Une fois que vous avez écrit et testé que, écrire un objet d'accès aux données à traiter la base de données:

package persistence; 

public interface EmployeeDao 
{ 
    List<Employee> find(); 
    Employee find(String id); 
    List<Employee findByName(String name); 
    void save(Employee e); 
    void update(Employee e); 
    void delete(Employee e); 
} 

écrire une implémentation pour cela et testé.

Ne vous inquiétez de la JTable que lorsque vous en avez besoin. Vos problèmes seront isolés à l'interface utilisateur à ce moment-là, car vous avez trié la persistance.