Jag är inte säker på varför du försöker casta och/eller använda valueOf() operationer... gör helt enkelt en ny BigDecimal objekt. Den har en konstruktor för att ta en float, dubbel, sträng, etc.
d.set_cost(new BigDecimal(42.00));
:)
Du kan också ändra din getString() operationer till getBigDecimal() .
Så som:
d.set_cost(cursor.getBigDecimal(6));
Detta gör det möjligt att skapa en tillfällig (och onödig)String eftersom du verkar vara efter att ha fått en BigDecimal i slutändan i alla fall.
Var bara medveten om värdet ditt ResultSet returnerar kan inte konverteras till en BigDecimal som om det är en sträng "abcd" kommer den att kasta ett Exception , men detta är förmodligen önskvärt eftersom du då har att göra med dålig data.