Ashley Baker
Ashley Baker

Reputation: 81

DBArrayList to List<Map> Conversion after Query

Currently, I have a SQL query that returns information to me in a DBArrayList.

It returns data in this format : [{id=2kjhjlkerjlkdsf324523}]

For the next step, I need it to be in a List<Map> format without the id: [2kjhjlkerjlkdsf324523]

The Datatypes being used are DBArrayList, and List.

If it helps any, the next step is a function to collect the list and then to replace all single quotes if any [SQL-Injection prevention]. Using:

listMap = listMap.collect() { "'" + Util.removeSingleQuotes(it) + "'" }


public static String removeSingleQuotes(s) {
    return s ? s.replaceAll(/'"/, '') : s
  }

Upvotes: 0

Views: 59

Answers (2)

Ashley Baker
Ashley Baker

Reputation: 81

I spent this morning working on it, and I found out that I needed to actually collect the DBArrayList like this:

listMap = dbArrayList.collect { it.getAt('id')}

If you're in a bind like I was and restrained to a specific schema this might help, but @ou_ryperd has the correct answer!

Upvotes: 2

ou_ryperd
ou_ryperd

Reputation: 2133

While using a DBArrayList is not wrong, Groovy's idiom is to use the db result as a collection. I would suggest you use it that way directly from the db:

Map myMap = [:]
dbhandle.eachRow("select fieldSomeID, fieldSomeVal from yourTable;") { row ->
    map[row.fieldSomeID] = row.fieldSomeVal.replaceAll(/'"/, '')
}

Upvotes: 1

Related Questions