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; 
} 

这将返回clob.toString。我需要从CLOB获取字符串(32K),我该怎么做?MobileFirst 7.1 JavaScript适配器 - 如何读取clob数据?

回答

0

你好,我已经能够解决这个问题。

我看到很多人都经历了相同的问题,我决定分享我的代码,我希望它有帮助。

MFP 7.1 JavaScript的SQL适配器使用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; 
} 

如果有人有一个想法,以提高代码共享。 再见!

相关问题