0
我有一个存储过程返回一个行列表,我需要过滤返回的结果集(rs
)由rs
列中的单个值。获取不同的值并过滤ResultSet而不写入循环?
val conn = DriverManager.getConnection(jdbcSqlConn)
// rs has a column of `Category`
val rs = conn.createStatement.executeQuery(s"exec getRows $id")
// Get distinct Category values from rs
val categories = // distinct value of column Category
// How to do it without iterating over the rows?
// For each category in categories
// get the rows filtered by category (where rs.Category = category)
// and save it to rsFiltered
val writer = new CSVWriter(new FileWriter(s"fileName_$category"))
writer.writerAll(rsFiltered, true) // rsFiltered need to have type of ResultSet
问:
- 如何从ResultSet中列得到不同值的列表,而循环?
- 请问
ResultSet
是否有过滤功能?还是需要将其转换为Scala集合?
你正试图在scala中投影命令式的方法,这不是正确的方法。尝试使用slick:这里有一些评论:https://github.com/slick/slick/issues/201在浮油中,你可以评估结果作为scala集合,这会给你很多机会来处理这些集合中的数据包括独特的,订购等 – Pavel
光滑看起来非常好,我一定会在未来使用它。但是,现在我需要尽快解决问题。也许我应该将'ResultSet'转换为Scala集合类型,这样我可以在功能上做到这一点? – ca9163d9
其实,我无法将其转换为其他集合类型。我将需要ResultSet来提供openCsv方法。 – ca9163d9