получить запись по идентификатору XSJS - PullRequest
0 голосов
/ 11 мая 2018

Я новичок в xsjs, я знаю, что для извлечения данных из базы данных (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();
    }
}
}

Помощь будет оценена

1 Ответ

0 голосов
/ 17 мая 2018

Это должно работать, только что проверил:

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 .

Более того, используйте отладчик для исследования проблемы (я слышал, что есть некоторые проблемы с отладкой файлов xsjs в Eclipse, но я делаю это без проблем в Intellij IDEA). И да, я бы хотелугадайте, что ваш id уникален, поэтому вы можете / должны получить только одну строку, а затем stringify только resultSet[0].

...