我目前有 2 个类,一个显示 GUI,一个是从数据库中获取项目。我的代码如下:
此代码用于在我的 GUI 中显示 JTable
public void table() {
if(SOMR.tableCall() == true) {
this.columnNames = SOMR.getCol();
this.data = SOMR.getData();
JTable table = new JTable(data, columnNames)
{
public Class getColumnClass(int column)
{
for (int row = 0; row < getRowCount(); row++)
{
Object o = getValueAt(row, column);
if (o != null)
{
return o.getClass();
}
}
return Object.class;
}
};
JScrollPane scrollPane = new JScrollPane( table );
add( scrollPane, BorderLayout.CENTER );
}
}
这段代码是检索项目并将它们传递给上述代码以将检索到的项目显示到JTable
public boolean table() {
Connection connection = null;
ResultSet resultSet = null;
PreparedStatement preparedStatement = null;
try
{
Class.forName("org.sqlite.JDBC");
connection = DriverManager.getConnection("jdbc:sqlite:db");
preparedStatement = connection.prepareStatement("SELECT item1, item2, item3 FROM menu WHERE can = ? AND id = ?");
preparedStatement.setInt(1, can);
preparedStatement.setInt(2, id);
resultSet = preparedStatement.executeQuery();
ResultSetMetaData md = resultSet.getMetaData();
columns = 3;//md.getColumnCount();
for(int i = 1; i<=columns; i++) {
columnNames.addElement(md.getColumnName(i));
}
while(resultSet.next()) {
row = new Vector(columns);
for (int i = 1; i<=columns; i++) {
row.addElement(resultSet.getObject(i));
}
data.addElement(row);
}
tablecall = true;
return tablecall;
}
catch (Exception ex)
{
tablecall = false;
ex.printStackTrace();
}
finally
{
try
{
resultSet.close();
preparedStatement.close();
connection.close();
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
return tablecall;
}
我已经按照从Table From Database中显示 JTable 的方式,但是我真的不知道如何从 JTable 中插入、更新和删除一行并在数据库中更新,然后刷新 JTable 以从新更新的显示数据库。
我想添加一个“添加项目”按钮,然后它会弹出一个框架/窗口,其中包含要输入的字段,然后在弹出框架中单击“添加”后,JTable和数据库将同时更新。
有人可以帮我吗?我迷路了..非常感谢!