JTable 에 DB를 불러오려고 하는데 잘 안되네요
푸헷
자바로 메신저를 만들고 있는데
메시지함을 구현하고 하는데
DB 내용을 불러오는게 안되네요
밑은 소스인데 어떻게 수정해야 하는지 좀 알려주세요
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import javax.swing.event.*;
import javax.swing.table.*;
import java.sql.*;
public class MemoBox extends JFrame { //클래스 파일을 만들고 JFrame 이용하기
JTextArea ja1 = new JTextArea();
JTabbedPane tab = new JTabbedPane(); //변수생성
DefaultTableModel model;
ResultSet rs;
ResultSetMetaData rsm;
Statement smt;
Connection conn;
Container cp;
String sql;
JTable table;
JScrollPane sp;
int row;
int age, age2;
String name, name2 ;
JTable1 j1;
public MemoBox() {
super(Free Messenger 메시지함); //상속받아서 처리하세요
tab = new JTabbedPane(JTabbedPane.TOP);//tab 위치지정 TOP,BOTTOM,LEFT,RIGHT
// ********** 패널을 만들어 개체를 붙임 ************************
JPanel one = new JPanel(); //one 판넬생성
j1 = new JTable1(); //j1 테이블생성
JPanel two = new JPanel();
one.add(j1); //one 패널에 j1 테이블을 붙이기
// ************* 탭에 패널을 붙임 ******************************
tab.addTab(받은 쪽지함, one); //생성된 탭에 제목넣기
tab.addTab(보낸 쪽지함, two);
// *********** 컨텐츠 페인에 탭을 붙임 ***************************
getContentPane().add(tab,BorderLayout.NORTH); //컨테이너의 위치와 정렬방식 결정
setSize(930,600); //프레임사이즈
setVisible(true); //화면에 보일건지 말건지
setConnect();
setChogi();
setQuery();
this.add(ja1, Center);
}
class JTable1 extends JPanel {
public JTable1() {
String title[] = {보낸사람,받은사람,내용}; //테이블에 들어가 메뉴
String data[][] = { //테이블에 들어갈 데이터 배열
};
table = new JTable(data, title); //table 생성하고 data,title 넣기
table.setPreferredScrollableViewportSize(new Dimension(900,300));
JScrollPane tableScroll = new JScroll JScrollPane(table); //sp 생성하고 table 넣기
add(tableScroll); //sp 생성하기
tableScroll.getViewport().setBackground(Color.white);
table.getTableHeader().setReorderingAllowed(false);
}
}
public void exit(){
try {
if (rs != null) rs.close();
if (smt != null) smt.close();
if (conn != null) conn.close();
}catch(SQLException se){
}
}
public void setDesign(){
for (int i = 0; i2; i++){
}
for (int i = 0; i5; i++){
} for (int i=0; i4; i++){
}
String col[] = {,};
model = new DefaultTableModel(col,3);
table = new JTable(model);
sp = new JScrollPane(table);
table.addMouseListener(new tableEvent());
cp.setLayout(new FlowLayout());
}
public class tableEvent extends MouseAdapter{
public void mouseClicked(MouseEvent e){
row = table.getSelectedRow();
name2 = table.getValueAt(row, 0).toString();
age2 = Integer.parseInt(table.getValueAt(row,1).toString()); }
} public void setConnect(){
String driver = com.microsoft.jdbc.sqlserver.SQLServerDriver;
String url = jdbc:sqlserver://203.230.158.235;databaseName=db_2004141012;
String id = db_2004141012;
String pass = 1187411;
try{
Class.forName(driver);
conn = DriverManager.getConnection(url,id,pass);
smt = conn.createStatement();
}catch(ClassNotFoundException cf){
}catch(SQLException se){
}
}public void setChogi(){
for (int i = 0; i2; i++){
}
sql = select * from sendMemoMsg;
setQuery();
}
public void setQuery(){
int num = 0;
model.setRowCount(0);
model.setColumnCount(0);
try{
rs = smt.executeQuery(sql);
rsm = rs.getMetaData();
num = rsm.getColumnCount();
String data[] = new String[num];
for (int i = 1; i num+1 ; i++){
model.addColumn(rsm.getColumnName(i));
}
while (rs.next()){
for (int i = 1; i num+1; i++){
data[i-1] = rs.getString(i);
}
model.addRow(data);
}
}catch(SQLException se){
}
}
public static void main(String args[]) { //실행
MemoBox jt = new MemoBox(); //jt 를 만들고 불러오기
jt.setDefaultCloseOperation(EXIT_ON_CLOSE); //종료하기
}
}
-
4차원
수다님은 참 대단하세요~ 어쩜 ;; 저 소스를 일일이 실행해 보실 생각을 하셨을까;;;
이도겸님 // 조렇게 소스만 달랑 올리면. 보통은 안해 줍니다. 경탁님께서 착해서 해 주신거라 보이네요.
문제가 있으면, 소스와 함께 어떤 에러 메세지가 나오는지 첨부해 준다면,
다른 분들도 쉽게 도움을 줄 수 있을 확률이 높아 집니다. -
흰우유
public void setQuery(){
int num = 0;
model.setRowCount(0);-- 이부분에서 에러나네요
초기 실행 될때 컬럼 초기화가 될것 같지는 않습니다.
처음 불러왓을때는 건너뛰는것도 좋을것 같습니다.
그리고 SQL 문에 초기 실행문 두번째 실행 구분 지으시는것이 좋을 합니다
쓰기 나름이겠지만요
if ~~로 한번 고려해도 좋을것 같습니다