("update borrow_book set borrowbooknumber=borrowbooknumber+1 where id=?)");
sql写错了阿
多写了一个)
去掉就好了

解决方案 »

  1.   

    executeUpdate(sql)
    当sql为insert update等时,不应该将返回值赋给a吧
      

  2.   

    现在改好了,但是很奇怪,却发生hstmt连接战线,sql driver有问题,insert into borrow_book放在条件外一点问题没有,放在里面就有上面的异常
      

  3.   

    代码如下:
    <%@ page import="java.sql.*"%>
    <%@ page session="true"%>
    <%--@ page errorPage="err_booksingle.jsp"--%>
    <html>
    <head>
    <title>单本还书结束界面</title>
    </head>
    <body>


    <%
    String id=request.getParameter("id");
    String username=(String)session.getAttribute("aa");
    String name=null;
    int number=1;
    int a=0;
    String date=null;
    String concern=null;

    //try{
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection con=DriverManager.getConnection("jdbc:odbc:FBO");
    PreparedStatement ps=con.prepareStatement("select * from book where book_id=? and book_number>=1");
    ps.setString(1,id);
    ResultSet rs=ps.executeQuery();
    if(rs.next()){
    out.print("1");
    name=rs.getString(2);
    date=rs.getString(6);
    concern=rs.getString(7);
    ps=con.prepareStatement("update book set book_number=book_number-1 where book_id=?");
    ps.setString(1,id);
     a=ps.executeUpdate();
    if(a>0){
    out.print("3");
    ps=con.prepareStatement("select * from borrow_book where id=?");
    ps.setString(1,id);
    ResultSet rr=ps.executeQuery();
    if(rr.next()){
    ps=con.prepareStatement("update borrow_book set borrowbooknumber=borrowbooknumber+1 where id=?");
    ps.setString(1,id);
    ps.executeUpdate();

    }
    else{
    ps=con.prepareStatement("insert into borrow_book values(?,?,?,?,?,?)");
    ps.setString(1,id);
    ps.setString(2,name);
    ps.setString(3,concern);
    ps.setInt(4,number);
    ps.setString(5,date);
    ps.setString(6,username);
    ps.executeUpdate();


    }
    ps.close();
    rs.close();
    rr.close();
    con.close();
    }
    else{
    out.print("4");
    }

    }
    else{
    out.print("2");
    }

    /*}
    catch(Exception e){
    out.print("0");
    }*/

    %>
    恭喜借书成功
    </body>
    </html>
      

  4.   

    异常详细信息如下:
    HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: [Microsoft][ODBC SQL Server Driver]连接占线导致另一个 hstmt
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:867)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:800)
    org.apache.jsp.borrowbook_005fsingle_005ffinish_jsp._jspService(borrowbook_005fsingle_005ffinish_jsp.java:117)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    root cause java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]连接占线导致另一个 hstmt
    sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6879)
    sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7036)
    sun.jdbc.odbc.JdbcOdbc.SQLExecute(JdbcOdbc.java:3104)
    sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(JdbcOdbcPreparedStatement.java:214)
    sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeUpdate(JdbcOdbcPreparedStatement.java:136)
    org.apache.jsp.borrowbook_005fsingle_005ffinish_jsp._jspService(borrowbook_005fsingle_005ffinish_jsp.java:73)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    note The full stack trace of the root cause is available in the Tomcat logs.
    --------------------------------------------------------------------------------Apache Tomcat/5.0.16