【问题标题】:enter query string in textfield on webpage, click submit and get query results back在网页的文本字段中输入查询字符串,单击提交并返回查询结果
【发布时间】:2019-04-16 07:07:47
【问题描述】:

我正在寻找一种通用方法来将任何查询字符串(来自任何 oracle 表,非硬编码)从网页表单/字段传递到数据库,并使网页显示结果的表/网格。到目前为止,我看到的所有示例都需要在 github 上的 CRUD 应用程序中预先对列/表名进行硬编码。我希望能够从具有不同列、数据类型的各种表中获取结果。我不希望在应用程序中硬编码表/列。到目前为止,我一直在使用 SpringBoot 来接受 POST req 中的任何查询字符串并将结果作为 json 记录列表返回,但我想让它更具交互性,易于临时用户使用,因此寻求一些简单文本字段输入和动态结果网格的示例.

【问题讨论】:

    标签: javascript node.js spring angular spring-boot


    【解决方案1】:

    看看 Knex.js:https://knexjs.org/

    这是一个适用于不同数据库的查询构建器。这是他们文档中的一个小样本:

    var knex = require('knex')({
      client: 'oracle'
    });
    
    function handleRequest(req, res, next) {
      query = knex.select(req.body.columns).from(req.body.table);
    
      console.log(query.toString()); // select "c1", "c2", "c3" from "some_table"
    }
    
    // Imagine this was invoked from Express and the body was already parsed.
    handleRequest({
      body: {
        table: 'some_table',
        columns: ['c1', 'c2', 'c3']
      }
    });
    

    如您所见,输入只是可以来自任何地方的字符串,包括客户端/最终用户。请注意连接到数据库的用户具有适当的授权(此处适用最低权限)。

    【讨论】:

    • 我不想硬编码列名。需要像websystique.com/spring-boot/… 这样的东西,但输出网格不是硬编码的cols,输入是sql。
    • 这只是一个例子,输入可以来自任何地方。我已经用一个更清楚的例子更新了答案。
    猜你喜欢
    • 2023-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多