按id xsjs获取记录

0x6upsns  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(380)

我是xsjs新手,我知道要从db(hana db)检索数据,我们需要使用prepare语句。我尝试过使用它,但是我的.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();
    }
}
}

会得到帮助的

fhity93d

fhity93d1#

这应该管用,只是检查一下:

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-link到hdb文档。
此外,使用调试器来调查这个问题(我听说在eclipse中调试xsjs文件有一些问题,但是我在intellij idea中没有问题)。是的,我猜你的 id 是唯一的,因此您只能/应该获得一行,然后 stringify 仅限 resultSet[0] .

相关问题