在这里编程新手。无法使用MySQL搜索结果更新表。
我正在忙于学习Java 8,目前正在练习使用GUI编写一个小型数据库程序。我正在为此使用Netbeans。我(虽然可以)不编写GUI,但是使用NetBeans GUI设计器。
当我运行程序时,会弹出一个窗口,其中包含一个文本字段和一个带有Jtable的搜索按钮,其中的Jtable已填充有数据库条目的4列。
我希望能够使用文本字段和搜索按钮来运行部分搜索,并让Jtabel刷新以在单击搜索按钮时仅显示搜索结果。
到目前为止,我要么将搜索结果作为更多行追加到表中。将整个表追加为表上的更多行,或者什么都没有发生。
这是我用来设置数组和获取器的Java类。
class array {
private String Column_One;
private String Column_Two;
private String Column_Three;
private String Column_Four;
public User(String Column_One, String Column_Two, String Column_Three, String Column_Four) {
this.Column_One = Column_One;
this.Column_Two = Column_Two;
this.Column_Three = Column_Three;
this.Column_Four = Column_Four;
}
public String get Column_One() {
return Column_One;
}
public String getColumn_Two() {
return Column_Two;
}
public String getColumn_Three() {
return Column_Three;
}
public String getColumn_Four() {
return Column_Four;
}
}
这里是启动程序时用来填充Jtable的代码
public class JavaClass extends javax.swing.JFrame {
public ArrayList<array> List = new ArrayList<array>();
public JavaClass() {
initComponents();
populate_Table();
// the next line is for a Jpanel containing the search textflield and search button part of a defunct combo box selection event
JPanel.setVisible(true);
public ArrayList<array> arrayLists() {
{
String Url = "Url";
try {
Connection DbCon = DriverManager.getConnection(Url, "username", "password");
String sql = "SELECT ColumnOne, ColumnTwo, ColumnThree, ColumnFour FROM mysqldatabasetable ";
Statement pst = DbCon.createStatement();
ResultSet rs = pst.executeQuery(sql);
User user;
while (rs.next()) {
// The next line is what the columns will be called in Mysql
user = new User(rs.getString("sqlColumnOne"), rs.getString("sqlColumnTwo"), rs.getString("sqlColumnThree"), rs.getString("sqlColumnFour"));
List.add(array);
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
return List;
}
public void populate_Table() {
ArrayList<array> JtableList = arrayLists();
DefaultTableModel model = (DefaultTableModel) Guidatabasetable.getModel();
Object[] row = new Object[4];
for (int i = 0; i < JtableList.size(); i++) {
row[0] = JtableList.get(i).getColumn_One();
row[1] = JtableList.get(i).getColumn_Two();
row[2] = JtableList.get(i).getColumn_Three();
row[3] = JtableList.get(i).Column_Four();
model.addRow(row);
}
Guidatabasetable.setModel(model);
}
因此,从事物的声音中,您需要从JTable
模型中删除所有先前存在的行。从内存中使用DefaultTableModel
,这非常容易...
DefaultTableModel model = (DefaultTableModel) Guidatabasetable.getModel();
model.setRowCount(0);
// Fill with results from database