Avatar billede martinm Nybegynder
17. oktober 2003 - 19:39 Der er 3 kommentarer og
1 løsning

XML, primitiv datatype og BEA

Hej,

Jeg har et lille problem med min kode.

Der er tale om en J2EE Applikation, der henter data fra en MS SQL database, hvorefter dette bliver sat ind i et XML dokument og valideret op imod en XSD. Alle 'XML klasserne' der benyttes er BEAs egne.

Jeg har et tilfælde, hvor em Stored Procedure returnerer et resultset med en række og en kolonne. Værdien i cellen er (næsten) altid tallet 0.

Der er dog den udfordring, at tallet bliver hentet rigtigt nok op af databasen, men når det bliver sat ind i response XMLen bliver det til -2147483648, som er integers mindste værdi?? Hvorfor?

Noget galt med encoding?
Avatar billede arne_v Ekspert
17. oktober 2003 - 19:40 #1
Det er meget svært at sige udefra de foreliggende oplysninger.....
Avatar billede martinm Nybegynder
17. oktober 2003 - 19:45 #2
Jeg kan komme med lidt source kode:

<----SNIP---->
  rs = stmt.executeQuery();
            rsmd = rs.getMetaData();
            int defaultCount = 0;

            while (rs.next()) {
                IDocument rowMsg = (IDocument) rowSkeleton.clone();

                for (int i = 1; i <= rsmd.getColumnCount(); i++) {
                    int type = rsmd.getColumnType(i);
                    String val = null;

                    if (type == java.sql.Types.TIMESTAMP) {
                        val = getXMLDateTimeFromSQLTimestamp(rs.getTimestamp(i));
                    } else if (type == java.sql.Types.DATE) {
                        val = getXMLDateFromSQLDate(rs.getDate(i));
                    } else if (type == java.sql.Types.TIME) {
                        val = getXMLTimeFromSQLTime(rs.getTime(i));
                    } else {
                        val = rs.getString(i);
                    }
                    String encodedVal = XMLUtils.encodeXML(val);
                    //Her er alt korrekt
                    rowMsg.setStringIn("/Row/" + colNameUse, encodedVal);
                }
                response.addNode("//Rows", rowMsg.getDocumentElement());

Men når jeg hiver det ud af dokumentet igen med
getStringFromFirst("/Rows/Row/dummyField");
bliver det som jeg beskrev ovenfor.
Avatar billede martinm Nybegynder
17. oktober 2003 - 19:46 #3
Avatar billede martinm Nybegynder
20. oktober 2003 - 13:05 #4
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester