javascript - MobileFirst 7.1 javascript 适配器 - 如何读取 clob 数据?

标签 javascript ibm-mobilefirst mobilefirst-adapters mobilefirst-server

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),我该怎么做?

最佳答案

您好,我已经解决了这个问题。

我看到很多人都遇到了同样的问题,我决定分享我的代码,希望它能有所帮助。

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

如果有人有改进代码的想法,请分享。 再见!

关于javascript - MobileFirst 7.1 javascript 适配器 - 如何读取 clob 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44781199/

相关文章:

javascript - 重定向时通过其他页面上的 url 调用 javascript 函数

mysql - MobileFirst 适配器 : JSON result order is different as that of the DB data position

ssl - IBM MobileFirst Platform 中的证书固定

java - IBM MobileFirst v8 登录 validator 的 LDAPS 配置

ibm-mobilefirst - Mobilefirst 是否提供直接访问 Web 服务的规定?

ibm-mobilefirst - 移动第一 8 : Unexpected error encountered while storing data

swift - 从 Swift 到 JS 适配器的 MobileFirst POST 请求

javascript - 如何在包含异步函数的循环之后完成某件事

javascript - 为什么本地状态的更改不会进入全局状态?

javascript - 如何在不重新加载页面的情况下使用ajax发送数据? ( Node )