我想知道如何在用户选择时将来自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 "
谢谢
答案 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
}