0

我是 xsjs 的新手,我知道要从 db(HANA db) 中检索数据,我们需要使用准备语句。我尝试使用它,但是我的 .xsjs 文件如何返回空 JSON。有人能帮我吗?分享我的代码。下面是用户表

id | user_name | password | marks
 1 | Prasanna  | test@123 | 10
 2 | sasne     | test@123 | 20
 3 | Ankush    | test@123 | 0
 4 | Shubham   | test@123 | 30
 5 | Anupama   | test@123 | 15

现在我想根据请求编写访问数据的获取id请求。我的 XSJS 代码如下

if ($.request.method === $.net.http.GET) {
var conn = $.db.getConnection();
var id = $.request.parameters.get('id');
var statement = 'SELECT * FROM "USER_TABLE" WHERE ID = ?';
$.response.contentType = "application/json";

try {
    var pstmt = conn.prepareStatement(statement);
    pstmt.setString(1, id);
    var result = pstmt.executeQuery();
    $.response.setBody(JSON.stringify(result));

    $.response.status = $.net.http.OK;

} catch (ex) {
    $.response.setBody(ex.toString());
} finally {
    if (conn) {
        conn.close();
    }
}
}

帮助将被appriciated

4

1 回答 1

0

这应该有效,刚刚检查过:

if ($.request.method === $.net.http.GET) {
    const id = $.request.parameters.get('id');
    $.response.contentType = "application/json";

    const conn = $.hdb.getConnection();
    try {
        const resultSet = conn.executeQuery('select * from "user_table" where "id" = ?', id);
        $.response.setBody(JSON.stringify(resultSet));
        $.response.status = $.net.http.OK;
    } catch (ex) {
        $.response.setBody(ex.toString());
    } finally {
        if (conn) {
            conn.close();
        }
    }
}

我认为您的问题是id不在双引号(“)中,这非常重要。

正如您所看到的hdb连接,处理 sql 查询变得更容易甚至更快,所以使用这个而不是 db -链接到 hdb 文档

此外,使用调试器来调查问题(我听说在 Eclipse 中调试xsjs文件存在一些问题,但我在 Intellij IDEA 中没有问题)。是的,我猜你id是独一无二的,因此你可以/应该只得到一行,然后stringify只有resultSet[0].

于 2018-05-17T11:23:31.680 回答