2016-03-06 39 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); 
    }