Tag: cachedrowset

如何检查CachedRowSet中是否存在列名?

我正在查询可能会发生变化的视图中的数据。 在我执行crs.get******()之前,我需要知道列是否存在。我发现我可以查询这样的元数据,以便在我从中请求数据之前查看列是否存在。 ResultSetMetaData meta = crs.getMetaData(); int numCol = meta.getColumnCount(); for (int i = 1; i < numCol+1; i++) if(meta.getColumnName(i).equals("name")) return true; 是否有更简单的方法来检查列是否存在? 编辑:它必须是数据库不可知的。 这就是我引用CachedRowSet而不是数据库的原因。

引起:java.lang.ClassCastException:java.sql.Timestamp无法强制转换为java.sql.Date

我收到以下代码片段的以下给定错误: try { cRows = new CachedRowSetImpl(); while(cRows.next()) { MyClass myClass = new MyClass(); myClass.setPrevDate(cRows.getDate(“PREV_DATE”)); // In debug mode, the error was throwing when I press Resume from here. } } 错误: Caused by: java.lang.ClassCastException: java.sql.Timestamp cannot be cast to java.sql.Date 在数据库中,该列的数据类型仅为DATE 。 我无法弄清楚Timestamp在这里的位置。

CachedRowSet比ResultSet慢?

在我的java代码中,我使用select语句访问oracle数据库表。 我收到很多行(大约50.000行),所以rs.next()需要一些时间来处理所有行。 using ResultSet, the processing of all rows (rs.next) takes about 30 secs 我的目标是加快这个过程,所以我改变了代码,现在使用CachedRowSet : using CachedRowSet, the processing of all rows takes about 35 secs 我不明白为什么CachedRowSet比普通ResultSet慢,因为CachedRowSet一次检索所有数据,而ResultSet每次调用rs.next都会检索数据。 以下是代码的一部分: try { stmt = masterCon.prepareStatement(sql); rs = stmt.executeQuery(); CachedRowSet crset = new CachedRowSetImpl(); crset.populate(rs); while (rs.next()) { int countStar = iterRs.getInt(“COUNT”); … } } finally { […]

除了专有的Sun之外,是否有任何好的CachedRowSet实现?

我正在研究在我的应用程序的一部分中使用javax.sql.rowset.CachedRowSet ,但是我只能找到有关使用专有sun实现com.sun.rowset.CachedRowSetImpl或Oracle特定实现的信息。 sun实现不受支持且可能会发生变化 。 如果我希望将来部署到非Sun虚拟机,使用它也可能会导致问题,最后它会在我们的构建日志中留下不可抑制的警告,这可能会掩盖其他警告。 是否有一个开源替代实现,我可以使用我的应用程序部署,它可以在多个数据库中很好地工作? 至少支持MySQL的东西。

RowSet,CachedRowSet等的实现

直到今天,我在处理查询结果时正在使用ResultSet 。 但今天我读了一些关于RowSet和CachedRowset ,我意识到它们可以更好地满足我的目的。 虽然在所有的例子中我都读到了RowSet和CachedRowSet被称为对象的地方,当我在我的代码中自己尝试它时,我意识到这些是接口,在示例中它们使用了这些接口的一些实现。 现在我的问题是我在哪里找到这些实现,是否有正式的东西? 我需要下载它们还是它们带有JDK?