DB-Daten werden falsch dargestellt

Hallo zusammen,

ich habe eine Anwendung geschrieben, mit der ich meine Datenbank (MS SQL) bearbeiten kann.
Mein Problem ist, wenn ein abgefragter Zelleninhalt = "0.00000000000000" ist, wird im Output "0E-14" angegeben. Woran liegt das?

Ich löse das momentan, indem ich den eingelesenen Inhalt überprüfe und bei Bedarf ändere:
Java:
while (result.next()) {
          String kArt = result.getString("kArtikel");
          if(kArt.equals("0E-14")){
              kArt="0.00000000000000";
          }
          String fVKNet = result.getString("fVKNetto");
          if(fVKNet.equals("0E-14")){
              fVKNet="0.00000000000000";
          }
          String fUVP = result.getString("fUVP");
          if(fUVP.equals("0E-14")){
              fUVP="0.00000000000000";
          }
          String info = kArt + ", " + fVKNet + ", " + fUVP;
          System.out.println(info);
}

Gibt es vllt eine bessere, universellere Lösung, als jede Variable einzeln zu prüfen?
 
Wenn du im Vorfeld Nicht weist was dich erwartet dann hast du aber ein ganz mieses Konzept. Woher weist du denn dann was das überhaupt ist, wozu es gut ist und was man damit machen kann?
 
Okay, folgendes:

Java:
while (result.next()) {

          String info="";

          for(int i=1; i<=counterColumns;i++){

                    String kArt = result.getString(i);

                    info = info+ kArt +", ";

          }

         System.out.println(info);

}
Ich habe mehrere Tabellen und Abfragen und möchte einfach nur das Ergebnis dieser darstellen
 
K

kneitzel

Also wenn Du Columns lesen willst ohne deren Typ zu kennen, dann würde ich da mir einen Helper schreiben, der mir eben die Daten richtig ausliest und entsprechend formatiert.

Dazu kannst Du auf dem result getMetaData() aufrufen:
https://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html#getMetaData()

Da bekommst Du eine ResultSetMetaData Referenz zurück auf der Du dann getColumnType aufrufen kannst:
https://docs.oracle.com/javase/7/docs/api/java/sql/ResultSetMetaData.html#getColumnType(int)

Der Wert, der zurück kommt, kommt von java.sql.Types:
https://docs.oracle.com/javase/8/docs/api/java/sql/Types.html

Abhängig vom jeweiligen Typ kann dann der Wert korrekt gelesen werden und dann wie gewünscht auch formatiert werden.
(Die Java Funktionalitäten um diverse Typen zu formatieren sollten ja bekannt sein, daher gehe ich darauf nicht ein.)
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben