我正在尝试编写一个首先要求您输入用户名和密码的java程序,然后用它们连接到数据库。到目前为止工作正常。现在该计划就像一个客户/客户组织者。它有客户加入的类似地址日期的名称和信息,电话号码等。然后你点击一个客户,你可以看到它们上的任何注释。但那不是现在的问题。
我想要做的是从我的表中获取信息,该信息在mysql数据库中并使用JTable在java中显示。然后我同时在JTable中编辑该信息,它还会更新数据库。任何关于如何做到这一点的建议都会受到感谢。教程会更好。提前谢谢..
答案 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
或者这个:
答案 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
}
});
有用的链接