Jtable如何在不同的列中显示来自mysql的数据

时间:2013-06-02 20:50:41

标签: java mysql swing jtable

我正在尝试使用Jtable在java中显示数据库中的数据,是的,我已经实现了,但现在冲突是姓氏和名称,它们显示在一个列中,但我希望它们显示在不同的列中。下面是我的代码,请帮助..

import java.awt.Dimension;
import java.io.PrintWriter;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.*;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;

public class ju {
    private static Object request;
    static JTable mysTable;
    //constructor method

    public static void main (String args []){
    String [] columnNames = {"Name","Lastname","Id","Style"};
        mysTable = new JTable(4,4);
        mysTable.setBounds(20,10,300,300);

        JFrame frame = new JFrame("King Musa Saloon Software");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(null);
        frame.setSize(500,500);
        frame.setResizable(false);
           frame.setVisible(true);
            frame.add(mysTable);

//frame.add(mysTable);
        try {
            Class.forName("com.mysql.jdbc.Driver");
            System.out.println("Driver loading success!");
            String url = "jdbc:mysql://localhost:3306/saloon";
            String name = "root";
            String password = "";
            try {


                java.sql.Connection con = DriverManager.getConnection(url, name, password);
                System.out.println("Connected.");
         // pull data from the database 
java.sql.Statement stmts = null;
String query = "select  userid, username, name from saloonuser ";
stmts = con.createStatement();
ResultSet rs = stmts.executeQuery(query);
int li_row = 0;
while(rs.next()){
    mysTable.setValueAt(rs.getString("username"),li_row,0);
    mysTable.setValueAt(rs.getString("name"),li_row,0);
    int userid = rs.getInt("userid");
    String username = rs.getString("username");
    String name1     = rs.getString("name");
    System.out.println(name1);
    li_row++;


}




            } catch (SQLException e) {
                e.printStackTrace();
            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

    }

}

1 个答案:

答案 0 :(得分:6)

在这里查看您的代码:

mysTable.setValueAt(rs.getString("username"),li_row,0);
mysTable.setValueAt(rs.getString("name"),li_row,0);

它写在同一列中,您应该将其更改为:

mysTable.setValueAt(rs.getString("username"),li_row,0);
mysTable.setValueAt(rs.getString("name"),li_row,1);

尝试看看它是否有效:)