jsp连接ODBC问题

fangbo111 2005-05-20 02:47:20
<%@ 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;
String date=null;
String concern=null;
int a=0;

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:FBO");
PreparedStatement ps=con.prepareStatement("update book set book_number=book_number-1 where book_id=? and book_number>=1");
ps.setString(1,id);

a=ps.executeUpdate();
if(a>0){
out.print("1");
ps=con.prepareStatement("select * from book where book_id=?");
ps.setString(1,id);
ResultSet rs=ps.executeQuery();
if(rs.next()){
out.print("3");
name=rs.getString(2);
date=rs.getString(6);
concern=rs.getString(7);
}
else{
out.print("4");
response.sendRedirect("err_booksingle.jsp");
}
out.print("5");
ps=con.prepareStatement("select * from borrow_book where id=?)");
ps.setString(1,id);
rs=ps.executeQuery();out.print("6");
if(rs.next()){
ps=con.prepareStatement("update borrow_book set borrowbooknumber=borrowbooknumber+1 where id=?)");
ps.setString(1,id);
int c=ps.executeUpdate();
if(c>0){
ps.close();
}
else{
//response.sendRedirect("err_booksingle.jsp");
}
}
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);
int n=ps.executeUpdate();
out.println(n);
ps.close();
con.close();
}out.print("7");

rs.close();
}
else{
out.print("2");
//response.sendRedirect("err_booksingle.jsp");
}



%>
恭喜借书成功
</body>
</html>
为什么回有异常,错在哪里,异常如下:
HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: [Microsoft][ODBC SQL Server Driver][SQL Server]第 1 行: ')' 附近有语法错误。
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:119)
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][SQL Server]第 1 行: ')' 附近有语法错误。
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.executeQuery(JdbcOdbcPreparedStatement.java:89)
org.apache.jsp.borrowbook_005fsingle_005ffinish_jsp._jspService(borrowbook_005fsingle_005ffinish_jsp.java:77)
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
...全文
174 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fangbo111 2005-05-20
  • 打赏
  • 举报
回复
异常详细信息如下:
HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

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
fangbo111 2005-05-20
  • 打赏
  • 举报
回复
代码如下:
<%@ 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>
fangbo111 2005-05-20
  • 打赏
  • 举报
回复
现在改好了,但是很奇怪,却发生hstmt连接战线,sql driver有问题,insert into borrow_book放在条件外一点问题没有,放在里面就有上面的异常
witch13810043252 2005-05-20
  • 打赏
  • 举报
回复
executeUpdate(sql)
当sql为insert update等时,不应该将返回值赋给a吧
fangbo111 2005-05-20
  • 打赏
  • 举报
回复
不行改了后,还是有异常
elfbobo 2005-05-20
  • 打赏
  • 举报
回复
細心點往往能事半功倍!!!!!!!
ipv 2005-05-20
  • 打赏
  • 举报
回复
("update borrow_book set borrowbooknumber=borrowbooknumber+1 where id=?)");
sql写错了阿
多写了一个)
去掉就好了

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧