2010-11-24 12 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); 
} 
} 

데이터베이스의 마지막 행을 저장하고 있습니다. 데이터베이스의 모든 행을 JTable에 가져 오는 방법은 무엇입니까?java- mysql 데이터 검색 문제

답변

1

코드가 모든 데이터를 읽지 만 모두를 저장하지는 않습니다. 마지막 루프 실행의 데이터 만 보유합니다.

그리고 마지막 행에서만 테이블을 생성하므로 마지막 행만 표시됩니다. 당신은 ResultSet을 반복하지 않고 아니오 ResultSet에 의해 반환되는 모든 값을 저장하는

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

어떻게 모든 데이터를 저장합니까? – Rince

+0

@Rince check update –

+0

모든 데이터를 저장하는 방법 – Rince

1

보다

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

같은

시도 뭔가. 따라서 s1 .. s7은 결과 집합의 마지막 값을 보유합니다. s1[] .. s7[] 중 하나를 사용하여 결과 집합에서 열별로 모든 값을 저장하거나 집합의 모든 값 목록을 가질 수 있습니다.

가장 좋은 방법은 엔터티 (POJO)를 SQL 테이블에 매핑하는 POJO 개체를 만드는 것입니다.

+0

어떻게 POJO를 만듭니다. – Rince

+0

POJO (Plain Old Java Object)는 단순한 Java 클래스입니다. 귀하의 경우 SQL 테이블 열을 나타내는 getters/setters 속성이있는 클래스입니다. –

0

작은 단계로 나누면 더 쉽게 문제가됩니다.

모든 코드를 하나의 기본 메소드에 넣는 대신 여러 개의 작은 클래스로 나누는 것이 좋습니다. 하나에 집중하고 일하게하고 다음 일로 넘어 간다.

첫 번째 문제는 데이터 검색입니다.

Java는 객체 지향 언어입니다. Employee 클래스로 시작하십시오.

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); 
} 

이의 구현을 작성하고 테스트를 얻을 : 당신이 작성하고 테스트하는 것이 일단

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. 
} 

데이터베이스를 처리 할 수있는 데이터 액세스 객체를 작성합니다.

이러한 작업을 수행 할 때 JTable에 대해서만 걱정하십시오. 지속성을 분류했기 때문에 문제는 그 시점에서 UI로 격리됩니다.