2016-02-18 21 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 
    }