想要在用户选择SQL查询字符串时将来自Java UI的原始字符串解析?

时间:2016-02-18 11:58:59

标签: java mysql sql parsing

我想知道如何在用户选择时将来自webapp Java UI的原始字符串解析为Java中的SQL查询字符串!  例如:在UI上,我有100家公司(还有一个关于这些公司的信息的数据库),如果假设用户从UI中选择了两家公司并点击了搜索按钮,那么它应该返回有关这两家公司的所有信息comp1和comp2以及它们之间的关系这两家公司从sql数据库中获取以下查询: 表CompanyData包含有关ID,名称,CEO,Stablishment年,获奖,全球排名等公司的所有一般信息.... 表ComapanyDomain包含有关公司的域,技术和专业知识的信息,

SELECT * FROM CompanyData
 WHERE ID IN (SELECT ID FROM CompnayDomain
              WHERE companyName = "comp1" 
              and ID IN ( SELECT ID FROM CompnayDomain
                          WHERE companyName = "comp2"))

要解析的字符串在上面的场景中看起来像" Company comp1 and comp2 "

谢谢

1 个答案:

答案 0 :(得分:0)

我会像这样接近它(我没有使用你的sql查询,因为它根本没有任何意义,它将返回一个空集,除非2个公司具有相同的ID)

    String input = "Company comp1 and comp2";

    String data = input.substring(8, input.length());
    String [] companies = data.split("\\b and \\b");

    String sql = "SELECT * FROM CompanyData WHERE ID IN (SELECT ID FROM CompanyDomain WHERE companyName IN (";

    for(int i = 0; i < companies.length - 1; i++) {
        sql += "?,"
    }

    sql += "?)";

    for(int i = 0; i < companies.length; i++) {
        // Use prepared statement and insert the values here
    }