从mysql中检索数据并将其放在JTable上

时间:2014-02-04 03:35:43

标签: java mysql swing jtable

我正在尝试编写一个首先要求您输入用户名和密码的java程序,然后用它们连接到数据库。到目前为止工作正常。现在该计划就像一个客户/客户组织者。它有客户加入的类似地址日期的名称和信息,电话号码等。然后你点击一个客户,你可以看到它们上的任何注释。但那不是现在的问题。

我想要做的是从我的表中获取信息,该信息在mysql数据库中并使用JTable在java中显示。然后我同时在JTable中编辑该信息,它还会更新数据库。任何关于如何做到这一点的建议都会受到感谢。教程会更好。提前谢谢..

3 个答案:

答案 0 :(得分:0)

您可以使用通过操作结果集创建的表模型来构建表。您可以使用类似的东西,假设您正在使用JDBC并且您已经了解如何使用结果集...:

JTable table = new JTable(writeResult(res));


public static DefaultTableModel writeResult (ResultSet res) throws SQLException {

    ResultSetMetaData metaData = res.getMetaData();

    Vector<String> columnNames = new Vector<String>();
    int columnCount = metaData.getColumnCount();
    for (int column = 1; column <= columnCount; column++) {
        columnNames.add(metaData.getColumnName(column));
    }

    Vector<Vector<Object>> data = new Vector<Vector<Object>>();
    while (res.next()) {
        Vector<Object> vector = new Vector<Object>();
        for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
            vector.add(res.getObject(columnIndex));
        }
        data.add(vector);
    }
    return new DefaultTableModel(data, columnNames);
}

编辑:如果这没有帮助,Stack上有很多问题你可以参考...请在询问前检查你的问题是否已经得到解答!你可以查看:

Retrieve Data from MySQL DB and show in JTable

或者这个:

https://stackoverflow.com/search?q=fill+jtable+from+mysql

答案 1 :(得分:0)

这里有一些代码可以带你进一步..没有测试它,但它给你一般的想法。

ArrayList<String[]>  tableData=new ArrayList<>(); // you need a dynamic sized container for the results
ResultSet rs = statement.executeQuery( "SELECT * FROM Customer" );  // query the database

while ( rs.next() ){  // loop through the resultset as long as there is a next row
    tableData.add(new String[]{rs.getString("customerFirstName"), rs.getString("customerLastName"}); // for each row add a String[] with your data from the db
}

String[][] tableRows = tableData.toArray(new String[tableData.size()][]); // convert the ArrayList to a regular Array

String[] columnNames =  {
  "First Name", "Last Name"  // name your table columns
};

JFrame f = new JFrame();    // you need a window to display the JTable
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); 

JTable table = new JTable( tableRows, columnNames );   // thats how you put the data into the JTable
f.add( new JScrollPane( table ) );  // add the JTable to the window

f.pack();
f.setVisible( true );   // finished

现在你需要弄清楚的是如何检查表中的更改(当有人编辑某些内容时)以及如何将更改写回数据库。请查看Oracle Docs以查找更多信息。

答案 2 :(得分:0)

这有助于您从data获取database并将其显示在jtable上。

//全球宣言

private Vector<Vector<String>> data; //used for data from database
private Vector<String> header; //used to store data header

//向JTable显示信息

data = get();

//create header for the table
header = new Vector<String>();
header.add("Column1"); 
header.add("Column2");
...
model=new DefaultTableModel(data,header);
table = new JTable(model);

这将帮助您从数据库中获取数据

get(){
Vector<Vector<String>> doublevector = new Vector<Vector<String>>();

Connection conn = dbConnection();//Your Database connection code
PreparedStatement pre1 = conn.prepareStatement("select * from Table");

ResultSet rs1 = pre1.executeQuery();
while(rs1.next())
{
Vector<String> singlevector = new Vector<String>();
singlevector.add(rs1.getString(1)); 
singlevector.add(rs1.getString(2)); 
....
doublevector.add(singlevector);

}

return doublevector;
}

update您的数据库,您可以使用button,然后您应该在按钮的ActionListener()方法上编写代码。

只需创建一个按钮。

JButton update=new JButton("Update");

使用ActionListener

update.addActionListener(this);

使用actionPerformed()方法

@Override
public void actionPerformed(ActionEvent ae){
    if(ae.getSource()==update){
        int row = table.getSelectedRow();
        //Database connection

        //Get values from JTable

        val1 = table.getValueAt(row,0).toString();
        val2 = table.getValueAt(row,1).toString();
        val3 = table.getValueAt(row,2).toString();

        //Fire update query
    }
});

有用的链接

  1. JDBC - Update Records Example
  2. Using Prepared Statements