2016-02-18 22 views
0

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

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

字符串被解析,将升OOK像在上述情况下" Company comp1 and comp2 "

谢谢

+0

你想解析的字符串是什么样的? –

+0

不知道我跟着..一个数据样本和预期的输出将有助于 – sagi

+0

偏题:子sql可以写得更好?这是否产生相同的输出'...从公司数据WHERE ID IN(SELECT ID从CompnayDomain WHERE companyName IN(“comp1”,“comp2”))'? – Yazan

回答

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 
    }