1
function getUser(userId) { 

    var obj = {}; 

    var resultSet = WL.Server.invokeSQLStatement({ 
     preparedStatement: getUserSQL, 
     parameters: [userId] 
    }); 

    obj = { 
     name: result.resultSet[0]['NAME'], 
     image: result.resultSet[0]['IMAGE'] // ??? 
    } 

    return obj; 
} 

Dies gibt cloob.toString zurück. Ich muss die Zeichenfolge (32 KB) von CLOB abrufen, wie kann ich das tun?MobileFirst 7.1 Javascript Adapter - wie Clob Daten zu lesen?

Antwort

0

Hallo, ich war in der Lage, das Problem zu lösen.

Ich sehe, dass viele Leute die gleichen Probleme durchlaufen und ich beschloss, meinen Code zu teilen, ich hoffe, es hilft.

MFP 7.1 JavaScript SQL-Adapter mit Java

function getUsuario(codigoUsuario) { 

var stream = { close: function() { } }; 
var userInfo = {}; 

var connection = getConnection(); 
var getUsuarioSQL = 'SELECT * FROM DUAL'; // your sql 

if(connection !== null && !connection.erro) { 
    try { 
     var stmt = java.lang.Class.forName("java.sql.PreparedStatement").cast(connection.prepareStatement(getUsuarioSQL)); 
     stmt.setString(1, codigoUsuario); 

     var rs = java.lang.Class.forName("java.sql.ResultSet").cast(stmt.executeQuery()); 

     while(rs.next()) { 
      userInfo.nome = rs.getString("NOME_USUARIO"); 
      userInfo.codigoUsuario = rs.getString("COD_USUARIO"); 
      var clob = rs.getClob("AVATAR"); 

      var reader = java.lang.Class.forName("java.io.Reader").cast(clob.getCharacterStream()); 
      var bufferedReader = new java.io.BufferedReader(reader); 

      var line = ''; 
      while((line = bufferedReader.readLine()) !== null) { 
       userInfo.avatar += line; 
      } 
     } 

     return userInfo; 
    } catch(erro) { 
     return { erro: erro }; 
    } finally { 
     stream.close(); 
     connection.close(); 
    } 
} 

return { isSuccessful: false, connection: connection }; 

}

function getConnection() { 
    var connection = null; 

    try { 
     var context = new javax.naming.InitialContext(); 
     var dataSource = java.lang.Class.forName("javax.sql.DataSource").cast(context.lookup("YourJNDI")); 
     connection = java.lang.Class.forName("java.sql.Connection").cast(dataSource.getConnection()); 

     return connection; 
    } catch(erro) { 
     WL.Logger.warn("Erro: " + erro); 
     return { 
      erro: erro 
     }; 
    } 

    return connection; 
} 

Wenn jemand eine Idee hat, den Code zu verbessern, teilen. tschüss!

Verwandte Themen