JSP报错: java.sql.SQLException: ORA-01722: 无效数字

kylin8505 2006-05-17 11:41:08
String id=request.getParameter("id");
if(id==null){
out.print("<script>alert('没有找到您要查看的记录');window.close();</script>");
}
sql="select * from scott.main,scott.teacher,scott.type where

main.idofteacher=teacher.teacherid and main.idoftype=type.typeid and main.mainid='"+id+"'";
rs=stmt.executeQuery(sql);
if(!rs.next()){
out.print("<script>alert('没有找到您要查看的记录');window.close();</script>");
}
运行时 报错:java.sql.SQLException: ORA-01722: 无效数字

oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)
oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)
oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1451)
oracle.jdbc.ttc7.TTC7Protocol.fetch(TTC7Protocol.java:943)
oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:2126)
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2331)
oracle.jdbc.driver.OracleStatement.doScrollStmtExecuteQuery(OracleStatement.java:6280)
oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:640)
org.apache.jsp.detail_jsp._jspService(org.apache.jsp.detail_jsp:94)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

我想请问下这是什么原因 我的代码有问题吗?
我的表里面 关于ID的字段 我都用的 NUMBER型~~~
有高手帮忙解决下 谢谢了~~~
...全文
1269 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kylin8505 2006-05-17
  • 打赏
  • 举报
回复
ID是个字符型的 对象啊~~~
4楼 仔细说下 怎么转成字符串实施啊

按照3楼的那样改 还是一样的报错
在网上查了很多 都说SQL语句的问题

但是不知道怎么解决~~~
harston 2006-05-17
  • 打赏
  • 举报
回复
你那个id好像是个对象吧,转成字符串实施
foxty 2006-05-17
  • 打赏
  • 举报
回复
sql="select * from scott.main,scott.teacher,scott.type where

main.idofteacher=teacher.teacherid and main.idoftype=type.typeid and main.mainid='"+id+"'";

====》
sql="select * from scott.main,scott.teacher,scott.type where

main.idofteacher=teacher.teacherid and main.idoftype=type.typeid and main.mainid="+id;

PS:小心SQL注入漏洞~
sole_lodestar 2006-05-17
  • 打赏
  • 举报
回复
System.out.println(sql);
看看你的sql是否正确?
harston 2006-05-17
  • 打赏
  • 举报
回复
假设你你的id是131,那么你产生的查询语句就是下面的,如果你的mainid是要求数字的话,你应该知道那里错了吧,建议你以后要产生查询语句的时候做个程序输出看一下是不是你想要得。
select * from scott.main,scott.teacher,scott.type where main.idofteacher=teacher.teacherid and main.idoftype=type.typeid and main.mainid='131'

81,094

社区成员

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

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