我正在尝试将记录从 Hive 获取到新框架中的 JTable 中。新框架会弹出并显示列名称,但记录不可见。这是我的代码。
try{
Connection con = DriverManager.getConnection("jdbc:hive2://localhost:10000/default", "", "");
Statement stmt = con.createStatement();
ResultSet res;
stmt.setMaxRows(val);
sql = "select * from default.recommendations where recommendations.item='" + user +"'";
System.out.println("Running: " + sql);
res = stmt.executeQuery(sql);
while (res.next()) {
System.out.println(res.getString(1) + "\t" + res.getString(2) + "\t" + res.getString(3));
}
ResultSetMetaData rsmt = res.getMetaData();
int c = rsmt.getColumnCount();
Vector column = new Vector(c);
for(int i=1; i<=c; i++){
column.add(rsmt.getColumnName(i));
}
Vector data = new Vector();
Vector row = new Vector();
while (res.next()) {
row = new Vector(c);
for(int i=1; i<=c; i++){
row.add(res.getString(i));
}
data.add(row);
}
JFrame frame = new JFrame();
frame.setSize(500, 120);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JTable table = new JTable(data,column);
JScrollPane jsp = new JScrollPane(table);
panel.setLayout(new BorderLayout());
panel.add(jsp,BorderLayout.CENTER);
frame.setContentPane(panel);
frame.setVisible(true);
} catch(SQLException se){
System.Out.Println(se.getMessage())}
最佳答案
while (res.next())
{
System.out.println(res.getString(1) + "\t" + res.getString(2) + "\t" + res.getString(3));
}
执行查询后,您将读取所有数据并将其显示在控制台上。
while (res.next()) {
row = new Vector(c);
for(int i=1; i<=c; i++){
row.add(res.getString(i));
}
data.add(row);
}
然后您尝试将数据读入 vector 。问题是 ResultSet 中没有数据,因为您已经读取了所有数据。
摆脱第一个循环。
如果您想查看 ResultSet 的值,请将 System.out.println(...) 语句放入第二个循环中。
关于Java JTable 不显示记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32992860/