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

要在用户选择时将来自Java UI的原始字符串解析为SQL查询字符串吗?,java,mysql,sql,parsing,Java,Mysql,Sql,Parsing,我想知道如何在用户选择时将来自webapp Java UI的原始字符串解析为Java中的SQL查询字符串! 例如:在UI上,我有100家公司,还有一个数据库,其中包含关于这些公司的信息,如果用户从UI中选择了两个公司并单击搜索按钮,那么它应该返回关于这两个公司comp1和comp2的所有信息以及这两个公司之间的关系,并从sql数据库中获取以下查询: 表格CompanyData包含有关公司的所有一般信息,如ID、姓名、CEO、成立年份、获奖情况、全球排名等。。。。 表ComapanyDomain包

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

要解析的字符串看起来像上面场景中的comp1和comp2公司


谢谢

我会这样处理,我没有使用您的sql查询,因为它没有任何意义,它将始终返回一个空集,除非两个公司具有相同的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
    }

要分析的字符串是什么样子的?我不确定我是否遵循了。。一个数据和预期输出的示例将有助于脱离主题:子sql可以用更好的方式编写吗?这是否会产生相同的输出。。。从CompanyData WHERE ID IN SELECT ID FROM CompnayDomain WHERE companyName IN comp1,comp2?@Dan Bracuk,嘿,真的很抱歉我忘了把要解析的字符串放在上面讨论的场景中,它看起来像是comp1和comp2
    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
    }