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

こんにちは、私は問題を解決することができました。

多くの人が同じ問題を抱えていることがわかりましたが、コードを共有することにしました。

のJavaでMFP 7.1 JavaScriptのSQLアダプター

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

誰かがコードを改善するためのアイデアを持っている場合は、それを共有しています。 bye!

関連する問題