Вы можете выполнить SQL-запрос, используя serviceHub.jdbcSession()
. Ниже приведен пример потока, который использует его и возвращает список дат в заданном диапазоне. DATE_STATE
- это таблица базы данных, созданная MappedSchema
, которая определена специально для состояния, к которому я пытаюсь выполнить запрос. Информацию о создании MappedSchema
для государства можно найти здесь: https://docs.corda.net/api-persistence.html
@StartableByRPC
class QueryDateRangeFlow(val date1: Date, val date2: Date) : FlowLogic<List<Date>>() {
@Suspendable
override fun call(): List<Date> {
val connection = serviceHub.jdbcSession()
val queryString = "SELECT \"DATE\" FROM PUBLIC.DATE_STATE WHERE DATE BETWEEN ? AND ?;"
val prepStatement = connection.prepareStatement(queryString)
prepStatement.setObject(1, date1)
prepStatement.setObject(2, date2)
val rs = prepStatement.executeQuery()
val list = mutableListOf<Date>()
while (rs.next()) {
list.add(rs.getObject("DATE", java.util.Date::class.java))
}
return list.toList()
}
}