[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.*"%>
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(" | 英语"); while (rs.next()) { out.print(" |
---|---|---|---|---|
"+rs.getInt("no")+" | "+rs.getString("name")+" | "+rs.getInt("chinese")+" | "+rs.getInt("math")+" | "+rs.getInt("english")+" |
[/code]
[u][color=green]insert_success.jsp源码[/color][/u][code="java"]<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ page import="java.sql.*" %>
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("
");StuID"); out.print(" | StuName"); out.print(" | ChineseScore"); out.print(" | MathScore"); out.print(" | EnglishScore"); String ConStr = "jdbc:oracle:thin:@"; |
---|---|---|---|---|
"+rs.getInt("no")+" | "+rs.getString("name")+" | "+rs.getInt("chinese")+" | "+rs.getInt("math")+" | "+rs.getInt("english")+" |
%>
[/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("
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]
实在不知道哪里错了。。希望路过的大家帮忙看下。
[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("
[code="java"]String SQLQuery = "INSERT INTO stu VALUES("+no+",'"+name+"',"+chiscore+","+mathscore+","+engscore+")";
out.print(SQLQuery);
ResultSet rs = sql.executeQuery(SQLQuery); [/code]
[color=blue]
[b]这是一条UPdate语句,不应该用executeQuery,应该用executeUpdate[/b][/color]