В коде много проблем, вызывающих ясность, но я постараюсь ответить на ваш вопрос в меру моего понимания.
def jdbcReader(user:String,pwd:String, url: String, id:Int): Map[String, String] ={
try {
val connection = DriverManager.getConnection(url, user, pwd)
val statement = connection.createStatement()
val resultSet = statement.executeQuery(s"SELECT Nam, Value FROM tablename WHERE id=${id.toString}")
resultSet.map(e => (e.getString("Name"), e.getString("Value")).toMap
//Or if you want a hashmap
// resultSet.map(e=>(e.getString("Name"), e.getString("Value")).groupBy(_._1).map { case (k,v) => (k,v.map(_._2))}
} catch {
case e : Exception =>
e.printStackTrace()
val t = e.getMessage()
}
}
Мы не рекомендуем использовать var в Scala. Как и всегда, если только вам действительно не нужно. Поэтому вместо того, чтобы пытаться получить результаты и добавить их на карту, мы создадим карту с этими записями на ходу.
1) Мы берем результаты и сопоставляем их с кортежем (парой) ключей и значений
2) Просто вызовем .toMap, чтобы превратить его в карту
2.1) Вы также можете создать groupBy, который в основном группирует все эти пары по ключу, а затем вызвать .map для создания HashMap
Примечание. Я предложу несколько идей, которые могут быть немного продвинуты дляновичок, однако я настоятельно рекомендую уделить время ознакомлению с этими идеями, так как они будут вам очень полезны в будущем
Если по какой-либо причине вам необходимо обновить эту Карту в будущемВы должны либо изучить идею композиции функций , где вы должны создать новый, обновленный экземпляр Map и передать его туда, где когда-либо потребуется пройти композицию. Или, в случаях, когда абсолютно необходимо поддерживать общее состояние, просмотрите Монады состояний или cats.effect.Ref
Это решение предполагает, что resultSetКоллекция. Однако я должен сказать, что мне очень трудно поверить, что операция с базой данных просто возвращается. Эта операция, вероятно, должна быть заключена в IO и возвращать будущее, а все это должно возвращать Either или Try. Нам также не нравится создавать исключения в Scala. Я оставлю их вам в качестве упражнения, поскольку эти предложения выходят за рамки вопроса.