【问题标题】:ORA: 00933 SQL Command Not properly ended exception in JSP?ORA: 00933 SQL 命令未正确结束 JSP 中的异常?
【发布时间】:2011-11-22 06:43:37
【问题描述】:

我使用 jquery 创建了自动完成文本框,但在我的 jsp 页面中收到 ORA: 00933 SQL Command Not properly end 异常。这是我的代码

autocompleteTB.html

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery Auto Complete</title>
<script type="text/javascript" src="jquery-1.4.2.js"></script>
<script type="text/javascript">
function lookup(inputString) {
if(inputString.length == 0) {
$('#suggestions').hide();
} else {
$.post("states.jsp", {queryString: ""+inputString+""}, function(data){
if(data.length >0) {
 $('#suggestions').show();
$('#autoSuggestionsList').html(data);
}
});
}
}
function fill(thisValue) {
$('#inputString').val(thisValue);
setTimeout("$('#suggestions').hide();", 200);
}
</script>
<style type="text/css">
 body {
 font-family: Helvetica;
 font-size: 13px;
 color: #000;
 }
 h3 {
 margin: 0px;
 padding: 0px;
 }
 .suggestionsBox {
  position: relative;
  left: 260px;
  margin: 0px 0px 0px 0px;
  width: 200px;
  background-color: #7845DD;
  -moz-border-radius: 7px;
  -webkit-border-radius: 7px;
  border: 2px solid #000;
  color: #fff;
  }
  .suggestionList {
   margin: 0px;
   padding: 0px;
   }
   .suggestionList li {
    margin: 0px 0px 3px 0px;
    padding: 3px;
     cursor: pointer;
     }
   .suggestionList li:hover {
   background-color: #DD45CD;
   }
   </style>
   </head>
   <body>
   <div>
    <form>
    <div> <h3><font color="red">Name</font></h3> 
    <br /> Enter Name to see auto complete
     <input type="text" size="30" value="" id="inputString" onkeyup="lookup          (this.value);" onblur="fill();" />
   </div>
   <div class="suggestionsBox" id="suggestions" style="display: none;">
   <div class="suggestionList" id="autoSuggestionsList">
    </div>
    </div>
    </form>
     </div>
     </body>
      </html>

status.jsp

    <%@ page language="java" import="java.sql.*" %>
    <% response.setContentType("text/html");%>
    <%
     String str=request.getParameter("queryString");
     try {
    String connectionURL = "jdbc:oracle:thin:@localhost:1521:root";
    Connection con;
     Class.forName("oracle.jdbc.driver.OracleDriver");
    // Get a Connection to the database
   con = DriverManager.getConnection(connectionURL, "dummy", "dummy"); 
    //Add the data into the database
    String sql = "SELECT Name FROM Employee WHERE Name LIKE '"+str+"%' LIMIT 12";
    Statement stm = con.createStatement();
    stm.executeQuery(sql);
    ResultSet rs= stm.getResultSet();
    while (rs.next ()){
  out.println("<li onclick='fill("+rs.getString("Name")+");'>"+rs.getString("Name")   +"</i>");
  }
     }
   catch (Exception e){
  out.println("Any Exception: " +e.getMessage());
   }   
     %>

上面的代码..当我在文本框中输入名称时...它显示 SQL 异常...请任何人都可以查看我的代码并纠正我...卡住了。

【问题讨论】:

    标签: jquery sql oracle jsp oracle11g


    【解决方案1】:

    Oracle 中没有 LIMIT 子句。

    你可以使用

    SELECT Name FROM Employee WHERE Name LIKE ? and rownum < 13
    

    除此之外,你还有一个相当大的 SQL 注入漏洞。

    【讨论】:

    • 非常感谢......它工作得很好。非常感谢您的帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多