I am trying to populate data stored in my database into JTable. I have a println statement “records added to db” and it prints it out 18 times so the number of rows in the db matches the number of printed statements. However i get nothing displaying in my JTable and I don’t know where the mistake is.
Code:
try {
conn = SQLConnect.ConnectDb();
String sql = "SELECT * FROM CriminalRecords WHERE FName = ? and Sname = ?";
pst = conn.prepareStatement(sql);
pst.setString(1, NameSearch.getText());
pst.setString(2, SurnameSearch.getText());
rs = pst.executeQuery();
//display data from db into table hmm
ResultSetMetaData md = rs.getMetaData();
int columnNumber = md.getColumnCount();
Vector columns = new Vector(columnNumber);
// Get column names
//store column names
for(int i=1; i<=columnNumber; i++)
{
columns.add(md.getColumnName(i));
}
Vector data = new Vector();
Vector row;
//store row data
while(rs.next())
{
row = new Vector(columnNumber);
for(int i=1; i<=columnNumber; i++)
{
row.add(rs.getObject(i));
System.out.println("Records added to Table");
}
data.add(row);
}
JTable table1 = new JTable(data, columns);
this.add(table1);
rs.close();
pst.close();
conn.close();
JTable code
/---- table1 ----
table1.setModel(new DefaultTableModel(
new Object[][] {
{" ", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null},
{null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null},
},
new String[] {
"First Name", "Middle Name", "Surname", "Date of Birth", "Address", "Home Phone", "Business Phone", "Mobile Phone", "Resident Status", "Sex", "Race", "Incident Location", "Zone", "Premise Type", "Date Recorded", "Time Recorded", "Weapons", "Crime Offences"
}
));
table1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
scrollPane1.setViewportView(table1);
So the solution although it’s not the best but it works and that will do me for now.