Java 获取Swing表中的数据库信息作为输出

Java 获取Swing表中的数据库信息作为输出,java,swing,jtable,resultset,Java,Swing,Jtable,Resultset,我是Java新手,我正在练习一些新东西。。我已经开始处理数据库了。因此,我用MVC模式制作了一个待办事项列表应用程序 在我的模型中,我得到了所有的结果。在我看来,我试图将这些数据输出为一个漂亮的表。问题是除了一段硬编码的代码外,我没有得到任何输出 以下是我的观点代码 JTable table = null; public ToDoListView(ToDoListModel model) { this.model = model; setBackground(Color.WH

我是Java新手,我正在练习一些新东西。。我已经开始处理数据库了。因此,我用MVC模式制作了一个待办事项列表应用程序

在我的模型中,我得到了所有的结果。在我看来,我试图将这些数据输出为一个漂亮的表。问题是除了一段硬编码的代码外,我没有得到任何输出

以下是我的观点代码

JTable table = null;

public ToDoListView(ToDoListModel model) {
    this.model = model;

    setBackground(Color.WHITE);

    JTable table = new JTable();

    DefaultTableModel tableModel = new DefaultTableModel(new Object[][]{},new String[]{"To do","Date added"});

    table.setModel(tableModel);

    // this one below is outputted
    tableModel.addRow(new Object[]{"something","1-1-2012"});

    // this should give me all the results.. 
    for(int i = 0; i < model.getRows().size(); i++) {
        tableModel.addRow(model.getRows());
        System.out.println("added");
    }

    add(table);

}
JTable table=null;
公共ToDoListView(ToDoListModel模型){
this.model=模型;
挫折地面(颜色:白色);
JTable table=新的JTable();
DefaultTableModel tableModel=新的DefaultTableModel(新对象[][]{},新字符串[]{“To do”,“Date added”});
table.setModel(tableModel);
//下面这一个是输出的
addRow(新对象[]{“某物”,“1-1-2012”});
//这应该给我所有的结果。。
对于(int i=0;i
在我的模型中,我有这个

private Vector<String> rijen = new Vector<String>();

    public void getValue() {
    Connection con = null;
    Statement st = null;
    ResultSet rs = null;
     try {

        con = db.connectToAndQueryDatabase("test", "root", "root");
        System.out.println("connection established");

        st = con.createStatement();
        String query = "SELECT id, item, datum FROM toDoList";
        rs = st.executeQuery(query);

        while(rs.next()) {
            System.out.println(rs.getInt("id") + "\n" + rs.getString("item") + "\n" + rs.getDate("datum"));
            rijen.add(rs.getInt("id") + "");
            rijen.add(rs.getString("item"));
            rijen.add(rs.getDate("datum") + "");
        }

    public Vector<String> getRows() {
    return rijen;
}
private Vector rijen=new Vector();
public void getValue(){
连接con=null;
语句st=null;
结果集rs=null;
试一试{
con=db.connectToAndQueryDatabase(“test”、“root”、“root”);
System.out.println(“已建立连接”);
st=con.createStatement();
String query=“从toDoList中选择id、项目、数据”;
rs=st.executeQuery(查询);
while(rs.next()){
System.out.println(rs.getInt(“id”)+“\n”+rs.getString(“项”)+“\n”+rs.getDate(“数据”);
添加(rs.getInt(“id”)+”);
添加(rs.getString(“项目”);
添加(rs.getDate(“数据”)+”);
}
公共向量getRows(){
返回日仁;
}

这是所有相关的代码。我不知道我错过了什么或我做错了什么。有人能告诉我如何解决它吗:)?

在你的
ToDoModel
类中,你将所有数据添加到一个大的
向量中

    while(rs.next()) {
        System.out.println(rs.getInt("id") + "\n" + rs.getString("item") + "\n" + rs.getDate("datum"));
        rijen.add(rs.getInt("id") + "");
        rijen.add(rs.getString("item"));
        rijen.add(rs.getDate("datum") + "");
    }
然后循环该
向量
,将所有这些项添加到
表格模型
,但该循环不正确

for(int i = 0; i < model.getRows().size(); i++) {
    tableModel.addRow(model.getRows());
    System.out.println("added");
}
for(int i=0;i
始终添加整个向量,而不仅仅是该行的数据


再加上@user unknown的答案,你也许可以解决你的问题

在你的
ToDoModel
类中,你将所有数据添加到一个大的
向量中

    while(rs.next()) {
        System.out.println(rs.getInt("id") + "\n" + rs.getString("item") + "\n" + rs.getDate("datum"));
        rijen.add(rs.getInt("id") + "");
        rijen.add(rs.getString("item"));
        rijen.add(rs.getDate("datum") + "");
    }
然后循环该
向量
,将所有这些项添加到
表格模型
,但该循环不正确

for(int i = 0; i < model.getRows().size(); i++) {
    tableModel.addRow(model.getRows());
    System.out.println("added");
}
for(int i=0;i
始终添加整个向量,而不仅仅是该行的数据


结合@user unknown的答案,您可能能够解决您的问题

最好将您向我们展示的代码减少到相关部分,但如果您向我们展示一些实际编译的代码,情况会更好。另请参阅使用某种描述的方法。最好将您向我们展示的代码减少到他介绍了它的相关部分,但如果您向我们展示一些实际编译的代码,那就更好了。另请参阅使用一些描述的方法。我已将其更改为tableModel.addRow(model.getRows().get(i));以获取它包含的每一个值。但随后我得到了以下错误方法addRow(Vector)在类型DefaultTableModel不适用于参数(字符串)中,我真的看不到任何其他问题。@Reshad我认为错误消息非常清楚。您需要将
向量作为参数传递,只是不总是相同的一个。您要传递
model.getRows()
向量的一部分(例如,第一行包含前3个元素,第二行包含4到6个元素,…)我将其更改为tableModel.addRow(model.getRows().get(i));以获取它包含的每个值。但是,我得到以下错误类型DefaultTableModel中的方法addRow(Vector)不适用于参数(String)我真的没有看到任何其他问题。@Reshad我认为错误消息非常清楚。您需要传递一个
向量作为参数,只是不总是相同的一个。您想要传递
模型的一部分。getRows()
向量(例如,第一行包含前3个元素,第二行包含4到6个元素,…)