0
当用户按下“添加”或“删除”按钮(JtoggleButton)然后按下按钮()时,我编写了一个用于向数据库添加/删除数据的代码, JButton的),他们的标签数从1到9在将数据从数据库添加到jtable时有额外的列
下面的代码的用户界面:
当我试图在第一时间将数据添加到表中,它的确定和数量列仍为3列:
但是当我连续第二次或第三次添加数据时,还有更多3个额外的空白列也添加到表中,我不需要它。:
这里我认为问题发生的代码:
final DefaultTableModel defaultmodel2 = new DefaultTableModel();
final JToggleButton tglbtnAdd = new JToggleButton("Add");
final JToggleButton tglbtnDelete = new JToggleButton("Delete");
JButton button = new JButton("1");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection dbconbt1 = DriverManager.getConnection("" +"jdbc:sqlserver://localhost;databaseName=Store;user=<>;password=<>");
Statement sqlstatement = dbconbt1.createStatement();
ResultSet dbresultset1 = sqlstatement.executeQuery("select * from Store.dbo.Product where ProductID = 'P-1'");
ResultSetMetaData rsmetadata = dbresultset1.getMetaData(); // Get metadata on them
int numcols = rsmetadata.getColumnCount(); // How many columns?
if(tglbtnAdd.isSelected() == true)
{
for (int i = 1; i <= numcols; i++)
{
defaultmodel2.addColumn(rsmetadata.getColumnName(i));
}
while (dbresultset1.next())
{ Vector<Object> row = new Vector<Object>(numcols);
for (int i = 1; i <= numcols; i++)
{
row.addElement(dbresultset1.getObject(i));
}
defaultmodel2.addRow(row);
}
}
if(tglbtnDelete.isSelected() == true)
{
defaultmodel2.removeRow(0);
}
// Get row
dbresultset1.close();
sqlstatement.close();
dbconbt1.close();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
非常感谢。我的问题解决了。 –
这是一个很好的变化:P – MadProgrammer