0

次のように、db テーブルからすべてのデータを json オブジェクトに取得しようとしています。

function getTableData()
{
    var vals = {};
    var data = [];
    try {
    var dbCon = $.db.getConnection();

    var query = 'SELECT * FROM SAPPRD.ZUSERDATATAB';
    var pstmt = dbCon.prepareStatement(query);
    var rs = {};
    rs = pstmt.executeQuery();

     while (rs.next()) {
        vals.team = rs.getString(1);
        vals.fname  = rs.getString(3);
        vals.lname = rs.getString(2);
        data.push(vals);
        $.response.status = $.net.http.OK;
     }

 $.response.setBody(JSON.stringify(data));
  //      $.response.contentType = contentType;
  //      $.response.headers.set('Content-Disposition', 'filename=' + filename);
} catch (e) {
    $.response.setBody('errors: ' + e.message);
}
}

データでは、次のように行数 x 最後の行の内容を取得するため、クエリは部分的にしか機能しません。

[{"team":"I313766","fname":"0","lname":"LEGOWSKI"},  
 {"team":"I313766","fname":"0","lname":"LEGOWSKI"},
  etc. etc.]

1行の回数ではなく、すべてのデータを取得するにはどうすればよいですか?

4

2 に答える 2

2

さて、私は解決策を得ました。配列 vals を宣言する 1 行を while ステートメントに移動すると、問題が解決しました。配列 vals は毎回空の配列として初期化されるため、最後の行を db テーブルからデータに複数回プッシュする代わりに、各行の適切な .push を許可します。時間を割いて回答を試みてくれた皆さんに感謝します。

function getTableData()
{

     var data = [];
    try {
        var dbCon = $.db.getConnection();

        var query = 'SELECT * FROM SAPPRD.ZUSERDATATAB';
        var pstmt = dbCon.prepareStatement(query);
        var rs = pstmt.executeQuery();

         while (rs.next()) {
            var vals = {}; // this is the moved line of code...
            vals.team = rs.getString(1);
            vals.fname  = rs.getString(3);
            vals.lname = rs.getString(2);
            data.push(vals);
            $.response.status = $.net.http.OK;
         }

 $.response.setBody(JSON.stringify(data));
  //      $.response.contentType = contentType;
  //      $.response.headers.set('Content-Disposition', 'filename=' + filename);

    } catch (e) {
        $.response.setBody('errors: ' + e.message);
    }
}

誰かが将来それを必要とする場合に備えて、上記のソリューション。

于 2015-08-12T09:37:31.407 に答える