weixin_42396012 2010-08-26 11:05 采纳率: 100%
浏览 250
已采纳

JSP里连接数据库实现数据插入出错 求帮助。

[color=red]首先有两个页面insert.jsp和insert-success.jsp, 在insert.jsp里面连接数据库dbs,把表stu中的数据输出,然后添加一条记录,添加之后,跳转到insert_success.jsp 输出添加之后的stu里的所有记录。[/color]
[u][color=green]表结构如下:[/color][/u]
[img]http://dl.iteye.com/upload/attachment/298878/abc47b80-1a07-3f4a-8f57-678f0f13059d.jpg[/img]

[u][color=green]insert.jsp源码[/color][/u][code="java"]<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ page import="java.sql.*"%>


Insert Record Test...

data inserting test........


input StuID
input StuName
input ChineseScore
input MathScore
input EngScore



添加之前的数据记录:

<%
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch (ClassNotFoundException e){}

String ConStr = "jdbc:oracle:thin:@" ;
String ServerName = "localhost";
String url =ConStr+ServerName+":1521:dbs";
String SqlQuery = "SELECT * FROM stu";

Connection con = DriverManager.getConnection(url,"soo","qq");
Statement sql=con.createStatement();
ResultSet rs = sql.executeQuery(SqlQuery);

out.print("

");
out.print("");
out.print("");
out.print("");
out.print("");
out.print("");
out.print("");
out.print("");
}
out.print("
学号");
out.print("
姓名");
out.print("
语文");
out.print("
数学");
out.print("
英语");
while (rs.next())
{
out.print("
"+rs.getInt("no")+""+rs.getString("name")+""+rs.getInt("chinese")+""+rs.getInt("math")+""+rs.getInt("english")+"
");
rs.close();
sql.close();
con.close();
%>


[/code]

[u][color=green]insert_success.jsp源码[/color][/u][code="java"]<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ page import="java.sql.*" %>


New Records!




<%
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch (ClassNotFoundException e){}

String name = request.getParameter("name");
String no=request.getParameter("no");
String chiscore = request.getParameter("chiscore");
String mathscore = request.getParameter("mathscore");
String engscore = request.getParameter("engscore");

out.print("

");
out.print("");
out.print("");
out.print("");
out.print("");
out.print("");
out.print("");
out.print("");
}
out.print("
StuID");
out.print("
StuName");
out.print("
ChineseScore");
out.print("
MathScore");
out.print("
EnglishScore");

String ConStr = "jdbc:oracle:thin:@";
String ServerName = "localhost";
String url = ConStr+ServerName+":1521:dbs";
Connection con = DriverManager.getConnection(url,"soo","qq");
Statement sql = con.createStatement();
String SQLQuery = "INSERT INTO stu VALUES("+no+",'"+name+"',"+chiscore+","+mathscore+","+engscore+")";
out.print(SQLQuery);
ResultSet rs = sql.executeQuery(SQLQuery);
while(rs.next()){
out.print("

"+rs.getInt("no")+""+rs.getString("name")+""+rs.getInt("chinese")+""+rs.getInt("math")+""+rs.getInt("english")+"
");
rs.close();
con.close();
sql.close();

%>

[/code]
insert.jsp

[img]http://dl.iteye.com/upload/attachment/298880/f80fcc0b-2eb4-3049-b682-4b02a73cf0f3.jpg[/img]

[u][color=green]点击 click to add record之后出现如下错误:[/color][/u]
[code="java"]HTTP Status 500 -


type Exception report

message

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

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /insert_success.jsp at line 38

35: ResultSet rs = sql.executeQuery(SQLQuery);
36: while(rs.next()){
37: out.print("

");
38: out.print(""+rs.getInt("no")+"");
39: out.print(""+rs.getString("name")+"");
40: out.print(""+rs.getInt("chinese")+"");
41: out.print(""+rs.getInt("math")+"");

Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

javax.servlet.ServletException: java.sql.SQLException: ORA-00900: 无效 SQL 语句

org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:862)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
org.apache.jsp.insert_005fsuccess_jsp._jspService(insert_005fsuccess_jsp.java:113)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

java.sql.SQLException: ORA-00900: 无效 SQL 语句

oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:283)
oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:278)
oracle.jdbc.driver.T4C8Odscrarr.receive(T4C8Odscrarr.java:214)
oracle.jdbc.driver.T4CStatement.doDescribe(T4CStatement.java:723)
oracle.jdbc.driver.OracleStatement.getColumnIndex(OracleStatement.java:3276)
oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl.java:1914)
oracle.jdbc.driver.OracleResultSet.getInt(OracleResultSet.java:1563)
org.apache.jsp.insert_005fsuccess_jsp._jspService(insert_005fsuccess_jsp.java:92)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.29 logs.


Apache Tomcat/6.0.29[/code]
实在不知道哪里错了。。希望路过的大家帮忙看下。

  • 写回答

2条回答 默认 最新

  • 拽拽的初行者 2010-08-26 11:14
    关注

    [b]修改如下,供参考:[/b]

    [code="java"]String SQLQuery = "INSERT INTO stu VALUES("+no+",'"+name+"',"+chiscore+","+mathscore+","+engscore+")";

    // 先更新
    sql.executeUpdate(SQLQuery);
    // 再查询
    SqlQuery = "SELECT * FROM stu";

    ResultSet rs = sql.executeQuery(SQLQuery);

    while(rs.next()){

    out.print("

    ");

    out.print(""+rs.getInt("no")+"");

    out.print(""+rs.getString("name")+"");

    out.print(""+rs.getInt("chinese")+"");

    out.print(""+rs.getInt("math")+"");

    out.print(""+rs.getInt("english")+"");

    out.print("");

    } [/code]
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)