【发布时间】:2018-05-12 17:17:56
【问题描述】:
我正在尝试将数据显示到表格中,但出现了一些错误。我使用的方法返回了所有相关数据,但是当我尝试将数据绑定到表中时,它显示错误并且错误提示:
仅转发结果集不支持请求的操作。
这就是我实现代码的方式:
public class Table {
public static DefaultTableModel buildDataTable(ResultSet rs) {
ResultSetMetaData metaData;
Object[][] data = null;
Object[] columnNames = null;
try {
metaData = rs.getMetaData();
int columnCount = metaData.getColumnCount();
columnNames = new Object[columnCount];
int index = 0;
for (int column = 1; column <= columnCount; column++) {
columnNames[index] = metaData.getColumnName(column).toUpperCase();
index++;
}
rs.last();
data = new Object[rs.getRow()][columnCount];
rs.beforeFirst();
while (rs.next()) {
for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
data[rs.getRow() - 1][columnIndex - 1] = rs.getObject(columnIndex);
}
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
return new DefaultTableModel(data, columnNames);
}
}
以下代码显示了我如何将数据绑定到 jtable 中:
try {
dtm = com.gaurav.auctionhouse.common.Table.buildDataTable(new ItemDAOImp().getItemByUserId(MainClass.userId));
jTable1.setModel(dtm);
} catch (SQLException ex) {
Logger.getLogger(SellerPage.class.getName()).log(Level.SEVERE, null, ex);
}
以ResultSet形式返回数据的方法
public ResultSet getItemByUserId(int id) throws SQLException {
String query = "SELECT id, type, description, state, reservedPrice, itemName, image FROM tbl_item WHERE userId = ?";
try {
pst = DBConnection.getConnection().prepareStatement(query);
pst.setInt(1, id);
res = pst.executeQuery();
return res;
} catch (SQLException ex) {
throw new SQLException(ex);
} finally {
DBConnection.getConnection().close();
}
}
完整的堆栈跟踪
com.microsoft.sqlserver.jdbc.SQLServerException:仅转发结果集不支持请求的操作。 在 com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:191) 在 com.microsoft.sqlserver.jdbc.SQLServerResultSet.throwNotScrollable(SQLServerResultSet.java:414) 在 com.microsoft.sqlserver.jdbc.SQLServerResultSet.verifyResultSetIsScrollable(SQLServerResultSet.java:437) 在 com.microsoft.sqlserver.jdbc.SQLServerResultSet.last(SQLServerResultSet.java:1477) 在 com.gaurav.auctionhouse.common.Table.buildDataTable(Table.java:34) 在 com.gaurav.auctionhouse.view.SellerPage.(SellerPage.java:29) 在 com.gaurav.auctionhouse.view.AddItems.jbtnSubmitActionPerformed(AddItems.java:265) 在 com.gaurav.auctionhouse.view.AddItems.access$100(AddItems.java:33) 在 com.gaurav.auctionhouse.view.AddItems$2.actionPerformed(AddItems.java:111) 在 javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 在 javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) 在 javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 在 javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
希望得到积极的回应。
【问题讨论】:
-
你也可以发布堆栈跟踪吗?
-
@JohannesKuhn - 我添加了完整的堆栈跟踪,请看一下