2016-03-06 45 views
0

在執行中JSP下面的代碼,我收到此錯誤如何在JSP中解決Oracle缺少的表達式?

(ORA-00936:缺少表達式)

我已經檢查了整個查詢語句幾次,但無法弄清楚錯誤在哪裏。所有的單引號和雙引號都被關閉。

else if(desig.equals("Project Manager")) 
       { 
        String qry="select fname from emp_master where emp_id="+ 
         ("select eno from emp_digital where user_id='"+uname+"'"); 
        ResultSet rs1=st.executeQuery(qry); 
        rs1.next(); 
        name=rs1.getString(1); 
       } 

有人能幫我嗎?我正在運行這個JSP。 我檢查了所有的問題,但沒有得到任何答案。

非常感謝。

+0

爲使用括號嵌套查詢'選擇表其中id =(選擇...)' –

+0

你能指定有關這兩個數據庫表中的細節噸。 –

+1

1.不要使用scriptlets:把這段代碼放在Java類中; 2.學習準備好的狀態:如果uname包含單引號,則此代碼被破壞,並且會打開SQL注入攻擊; 3.發佈例外 –

回答

2

子查詢應該是在括號中是這樣的:

String qry="select fname from emp_master where emp_id="+ 
        "(select eno from emp_digital where user_id='"+uname+"')"; 

而且你一定要看看PreparedStatement

+0

的完整堆棧跟蹤非常感謝。有效 ! –

1

我看來像誤差會在本節:("select eno from emp_digital where user_id='"+uname+"'")

我會重新寫它,就像這樣:

("select eno from emp_digital where user_id=" + uname) 
+1

這不起作用。 –

1

試試這個...你應該寫「( 「和」)「用查詢字符串中的引號括起來。

else if(desig.equals("Project Manager"))  
    { 
    String qry="select fname from emp_master where emp_id="+"(select eno from emp_digital where user_id='"+uname+"')"; 

    ResultSet rs1=st.executeQuery(qry); 
    rs1.next(); 
    name=rs1.getString(1); 
    }