gpt4 book ai didi

java - 在 jtable 中显示 sqlite 数据表

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:19:25 25 4
gpt4 key购买 nike

我试图在 jtable 中显示一个 sqlite 数据表,但出现错误“sqlite is type forward only”

我怎样才能在jtable中显示它

               try {
long start = System.currentTimeMillis();

Statement state = ConnectionBd.getInstance().createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY

);
ResultSet res = state.executeQuery("SELECT * FROM data");

ResultSetMetaData meta = res.getMetaData();

Object[] column = new Object[meta.getColumnCount()];

for(int i = 1 ; i <= meta.getColumnCount(); i++){
column[i-1] = meta.getColumnName(i);
}

res.last();
int rowCount = res.getRow();
Object[][] data = new Object[res.getRow()][meta.getColumnCount()];

res.beforeFirst();
int j = 1;

while(res.next()){
for(int i = 1 ; i <= meta.getColumnCount(); i++)
data[j-1][i-1] = res.getObject(i);

j++;
}

res.close();
state.close();

long totalTime = System.currentTimeMillis() - start;
result.removeAll();
result.add(new JScrollPane(new JTable(data, column)), BorderLayout.CENTER);
result.add(new JLabel("execute in " + totalTime + " ms and has " + rowCount + " ligne(s)"), BorderLayout.SOUTH);
result.revalidate();

} catch (SQLException e) {
result.removeAll();
result.add(new JScrollPane(new JTable()), BorderLayout.CENTER);
result.revalidate();
JOptionPane.showMessageDialog(null, e.getMessage(), "ERREUR ! ", JOptionPane.ERROR_MESSAGE);
}

谢谢

最佳答案

调用res.last()是什么造成了麻烦。如果您想知道有多少行,那么您可以先发出 SELECT count(*) FROM (<your-query> ) base或者更简单,使用 ArrayList 而不是对象数组来保存行。 (您仍然可以对每一行使用 Object[],因为列数是提前知道的。)

关于java - 在 jtable 中显示 sqlite 数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2848842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com