高手请进!SOS
各位帮我看看下面有什么问题?我提交数据后,页面正常显示,但是数据没有.
connibm.java
// Java Document
package ibm;
import java.util.*;
import java.sql.*;
import javax.sql.*;
import java.io.*;
import oracle.jdbc.driver.*;
import javax.naming.*;
public class connibm {
String sDBDriver = "oracle.jdbc.driver.OracleDriver";
String sConnStr = "jdbc:oracle:thin:@ibm-2373-7wh:1521:ibm";
Connection connect = null;
ResultSet rs = null;
public connibm() {
try {
Class.forName(sDBDriver);
// connect = DriverManager.getConnection(sConnStr,"scott","dingding");
}
catch(java.lang.ClassNotFoundException e) {
System.err.println( e.getMessage());
}
// return connect;
}
public ResultSet executeQuery(String sql) {
rs = null;
try {
connect = DriverManager.getConnection(sConnStr,"scott","dingding");
Statement stmt = connect.createStatement();
rs = stmt.executeQuery(sql);
}
catch(SQLException ex) {
System.err.println(ex.getMessage());
}
return rs;
}
}
news_input.jsp
<%@ page contentType="text/html;charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312" />
<title>新闻模块</title>
</head>
<body>
<jsp:include page="/header.inc" flush="True" />
<jsp:include page="subject.inc" flush="True" />
<table width="780" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="600" height="20"><font color="#000000" >现在您的位置:新闻模块内容输入界面</font></td>
<td width="180" height="20"><font color="#000000" >现在的时间是:xxxxxxxxxx</font></td>
</tr>
</table>
<table width="780" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="100" valign="top"> </td>
<form name="form1" method="post" action="news_post.jsp">
<td width="500" height="400" valign="top"> <table width="600" border="0">
<tr>
<td width="90" height="29"><font size="2">主题:</font></td>
<td width="500" height="29">
<input name="title" type="text" size="40"></td>
</tr>
<tr>
<td height="25"><font size="2">来源:</font></td>
<td height="25">
<input type="text" name="from"></td>
</tr>
<tr>
<td height="22"><font size="2">时间:</font></td>
<td height="22">
<input type="text" name="date"></td>
</tr>
<tr>
<td height="60"><font size="2">内容:</font></td>
<td height="60">
<textarea name="message"></textarea></td>
</tr>
<tr>
<td height="21"><font size="2">撰稿人:</font></td>
<td height="21">
<input type="text" name="auther"></td>
</tr>
<tr>
<td height="28"><font size="2">新闻分类:</font></td>
<td><select name="kinds">
<option value="1">国内新闻</option>
<option value="2">国际新闻</option>
<option value="3">社区新闻</option>
<option value="4">财经新闻</option>
<option value="5">体育新闻</option>
</select></td>
</tr>
<tr>
<td colspan="2"><div align="center">
<input type="Submit" name="Submit" value="提交">
<input type="reset" name="Submit2" value="取消">
</div></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table>
<p> </p>
</td></form>
<td width="100" valign="top">空白区</td>
</tr>
</table>
<jsp:include page="/bottom.inc" flush="True" />
</body>
</html>
news_post.jsp
<%@ page contentType="text/html;charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<jsp:useBean id="ibmBean" scope="page" class="ibm.connibm"/>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312" />
<title>新闻模块</title>
</head>
<body>
<jsp:include page="/header.inc" flush="True" />
<jsp:include page="subject.inc" flush="True" />
<table width="780" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="600" height="20"><font color="#000000" size="2" >现在您的位置:新闻模块内容输入界面</font></td>
<td width="180" height="20"><font color="#000000" size="2" >现在的时间是:xxxxxxxxxx</font></td>
</tr>
</table>
<table width="780" border="0" cellspacing="0" cellpadding="0">
<%
String title,from,date,message,auther,kinds;
title=request.getParameter("title");
from=request.getParameter("from");
date=request.getParameter("date");
message=request.getParameter("message");
auther=request.getParameter("auther");
kinds=request.getParameter("kinds");
String sql;
ResultSet RS;
sql="insert into chr_news values('"+title+"','"+from+"','"+date+"','"+"','"+message+"','"+auther+"','"+kinds+"')";
//
RS=ibmBean.executeQuery(sql);
%>
成功发送信件
</table>
<jsp:include page="/bottom.inc" flush="True" />
</body>
</html>
问题点数:100、回复次数:37Top
1 楼seacaptain(大侠)回复于 2004-09-03 14:18:42 得分 0
急!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Top
2 楼blackcourser(潜心修炼)回复于 2004-09-03 14:29:59 得分 0
没有看到显示页面啊?
RS得到以后在哪里显示啊???
如果连“成功发送信件”都部显示的话,你看看应用服务器那里提示什么错误!Top
3 楼seacaptain(大侠)回复于 2004-09-03 14:34:38 得分 0
有"成功发送信件"的显示,但是在news_input.jsp中输入的内容没有进入数据库里Top
4 楼zhang21cnboy(事了抚衣去,不留身与名)回复于 2004-09-03 14:35:06 得分 0
sql="insert into chr_news values('"+title+"','"+from+"','"+date+"','"+"','"+message+"','"+auther+"','"+kinds+"')";
//
RS=ibmBean.executeQuery(sql);
插入语句,咋这么执行呢?Top
5 楼vcvj([Reside]in Fuzhou, [Gonna]be Oversea, [Depositing)回复于 2004-09-03 14:40:55 得分 10
to check your bean of the ibmBean.
try to add commit to your programTop
6 楼yaray(雅睿,生活在别处)回复于 2004-09-03 15:00:55 得分 20
在connibm类中加一个方法并编译:
public boolean update(String sql) throws Exception {
// 数据库连接在构造函数中生成(数据库连接可复用)
Statement stmt = connect.createStatement();
return (stmt.executeUpdate(sql)>0);
}
然后将
RS=ibmBean.executeQuery(sql);
替换为:
if(ibmBean.update(sql)){
System.out.println("成功");
}
Top
7 楼seacaptain(大侠)回复于 2004-09-03 21:11:02 得分 0
to yaray(雅睿,生活在别处,工作在别墅):
按照你的改了后,出现错误
javax.servlet.ServletException: ibm.connibm.update(Ljava/lang/String;)Z
Top
8 楼NewTypeQ(Full Java Alchemist)回复于 2004-09-03 21:24:35 得分 10
sql语句有问题
是不是都是CHAR字段呢Top
9 楼ikevin(菜无心)回复于 2004-09-03 21:31:26 得分 20
插入的方法是executeUpdate(),并且插入方法返回的是一个int型的数值。表示影响的行数。
所以应当:
public int executeQuery(String sql) {
int i=0;
try {
connect = DriverManager.getConnection(sConnStr,"scott","dingding");
Statement stmt = connect.createStatement();
i = stmt.executeUpdate(sql);
}
catch(SQLException ex) {
System.err.println(ex.getMessage());
}
return i;
}
//在JSP页面,判断只要ibmBean.executeQuery(sql)!=0,则表示插入成功。Top
10 楼jimsons(路漫漫其修远兮)回复于 2004-09-03 21:39:06 得分 10
楼上说得对
插入数据是用executeUpdate()Top
11 楼seacaptain(大侠)回复于 2004-09-03 21:51:22 得分 0
To ikevin(菜无心,按照你的方法改了,出现下面的错误
javax.servlet.ServletException: ibm.connibm.executeUpdate(Ljava/lang/String;)I
Top
12 楼jimsons(路漫漫其修远兮)回复于 2004-09-03 22:03:13 得分 0
你的方法名不要用executeUpdate吧
Top
13 楼seacaptain(大侠)回复于 2004-09-03 22:26:41 得分 0
//connibm.java
package ibm;
import java.util.*;
import java.sql.*;
import javax.sql.*;
import java.io.*;
import oracle.jdbc.driver.*;
import javax.naming.*;
public class connibm {
String sDBDriver = "oracle.jdbc.driver.OracleDriver";
String sConnStr = "jdbc:oracle:thin:@ibm-2373-7wh:1521:ibm";
Connection connect = null;
ResultSet rs = null;
public connibm() {
try {
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e) {
System.err.println( e.getMessage());
}
}
public ResultSet executeQuery(String sql) {
rs = null;
try {
connect = DriverManager.getConnection(sConnStr,"scott","dingding");
Statement stmt = connect.createStatement();
rs = stmt.executeQuery(sql);
}
catch(SQLException ex) {
System.err.println(ex.getMessage());
}
return rs;
}
public int execUpdate(String sql) {
int i=0;
try {
connect = DriverManager.getConnection(sConnStr,"scott","dingding");
Statement stmt = connect.createStatement();
i = stmt.executeUpdate(sql);
}
catch(SQLException ex) {
System.err.println(ex.getMessage());
}
return i;
}
}
//news_post.jsp
<%@ page contentType="text/html;charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<jsp:useBean id="ibmBean" scope="page" class="ibm.connibm"/>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312" />
<title>新闻模块</title>
</head>
<body>
<jsp:include page="/header.inc" flush="True" />
<jsp:include page="subject.inc" flush="True" />
<table width="780" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="600" height="20"><font color="#000000" size="2" >现在您的位置:新闻模块内容输入界面</font></td>
<td width="180" height="20"><font color="#000000" size="2" >现在的时间是:xxxxxxxxxx</font></td>
</tr>
</table>
<table width="780" border="0" cellspacing="0" cellpadding="0">
<%
String vtitle,vfrom,vdate,vmessage,vauther;
int vkinds;
vtitle=request.getParameter("title");
vfrom=request.getParameter("from");
vdate=request.getParameter("date");
vmessage=request.getParameter("message");
vauther=request.getParameter("auther");
vkinds=request.getParameter("kinds");
String sql;
ResultSet RS;
sql="insert into chr_news(title,from,date,message,auther,kinds) values('"+vtitle+"','"+vfrom+"','"+vdate+"','"+"','"+vmessage+"','"+vauther+"',"+vkinds+")";
//RS=ibmBean.executeQuery(sql);
if(ibmBean.execUpdate(sql)!=0){
System.out.println("成功");
}
%>
发送信件
</table>
<jsp:include page="/bottom.inc" flush="True" />
</body>
</html>
出现的错误提示
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: Unable to compile class for JSP
No Java compiler was found to compile the generated source for the JSP.
This can usually be solved by copying manually $JAVA_HOME/lib/tools.jar from the JDK
to the common/lib directory of the Tomcat server, followed by a Tomcat restart.
If using an alternate Java compiler, please check its installation and access path.
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:87)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:311)
org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:378)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:421)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:402)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:512)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:262)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:263)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:210)
javax.servlet.http.HttpServlet.service(HttpServlet.java:861)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:324)
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:246)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Subject.java:500)
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:268)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)
Top
14 楼seacaptain(大侠)回复于 2004-09-03 22:28:56 得分 0
chr_news的表结构;
名称 是否为空? 类型
----------------------------------------- -------- -------------
TITLE NOT NULL VARCHAR2(40)
FROM VARCHAR2(40)
DATE VARCHAR2(10)
MESSAGE NOT NULL VARCHAR2(2000
AUTHER NOT NULL VARCHAR2(10)
KINDS NOT NULL NUMBER(1)
另外,oracle自动提交在connibm.java中应怎么设置?Top
15 楼ikevin(菜无心)回复于 2004-09-03 22:35:55 得分 0
复制JDK下面/lib/tools.jar 到Tomcat的common/lib下面!Top
16 楼seacaptain(大侠)回复于 2004-09-03 23:08:03 得分 0
我现在用的不是TOMCAT 是sun 的appserver
tools.jar在classpath已经设置
public int execUpdate(String sql) {
int i=0;
try {
connect = DriverManager.getConnection(sConnStr,"scott","dingding");
Statement stmt = connect.createStatement();
i = stmt.executeUpdate(sql);
}
catch(SQLException ex) {
System.err.println(ex.getMessage());
}
return i;
}
还是有问题!//因为我把if(ibmBean.execUpdate(sql)!=0){
System.out.println("成功");
}
屏蔽掉/* */之后能够显示页面来.
Top
17 楼jimsons(路漫漫其修远兮)回复于 2004-09-03 23:29:02 得分 0
/* */在哪Top
18 楼xiangbo520(充栋汗牛)回复于 2004-09-04 08:01:15 得分 0
org.apache.jasper.JasperException: Unable to compile class for JSP
No Java compiler was found to compile the generated source for the JSP.
This can usually be solved by copying manually $JAVA_HOME/lib/tools.jar from the JDK
to the common/lib directory of the Tomcat server, followed by a Tomcat restart.
If using an alternate Java compiler, please check its installation and access path.
你的出错代码显示问题是因为无法找到JSP的编译器,提示你无法找到tools.jar这个文件。Top
19 楼XIHSHI(西红柿)回复于 2004-09-04 08:09:46 得分 0
弄些打印信息,自己调试一把?
UPTop
20 楼seacaptain(大侠)回复于 2004-09-04 09:22:04 得分 0
/*if(ibmBean.execUpdate(sql)!=0){
System.out.println("成功");
}
*/Top
21 楼seacaptain(大侠)回复于 2004-09-04 09:31:08 得分 0
添加了一句connect.setAutoCommit ( true ) ;
public int execUpdate(String sql) {
int i=0;
try {
connect = DriverManager.getConnection(sConnStr,"scott","dingding");
Statement stmt = connect.createStatement();
connect.setAutoCommit ( true ) ;
i = stmt.executeUpdate(sql);
}
catch(SQLException ex) {
System.err.println(ex.getMessage());
}
return i;
}
去掉/* */之后
if(ibmBean.execUpdate(sql)!=0){
System.out.println("成功");
}
能够显示页面,但是没有"成功",数据库里也没有新的数据Top
22 楼warehouseleet(堆栈.net)回复于 2004-09-04 09:36:20 得分 10
老兄你在添加数据库记录的bean时,试一下 用 stmt.execute(sql);
添加数据的时候是可以没有返回值的!!Top
23 楼jimsons(路漫漫其修远兮)回复于 2004-09-04 09:52:21 得分 20
试一下
public int execUpdate(String sql) {
int i=0;
try {
connect = DriverManager.getConnection(sConnStr,"scott","dingding");
Statement stmt = connect.createStatement();
i = stmt.executeUpdate(sql);
}
catch(Exception ex) {
System.out.println(ex.getMessage());
}
return i;
}
Top
24 楼seacaptain(大侠)回复于 2004-09-04 10:08:50 得分 0
to jimsons(路漫漫其修远兮:一样没有数据加入数据库
好象executeUpdate没有执行一样.Top
25 楼jimsons(路漫漫其修远兮)回复于 2004-09-04 10:13:17 得分 0
也没有错误信息吗Top
26 楼seacaptain(大侠)回复于 2004-09-04 10:25:12 得分 0
没有错误信息Top
27 楼seacaptain(大侠)回复于 2004-09-04 10:26:58 得分 0
在news_post.jsp里该怎样写算是提交数据了,commit?Top
28 楼seacaptain(大侠)回复于 2004-09-04 10:31:44 得分 0
是不是在connibm.java 中添加finally?
提交数据
关闭连接?Top
29 楼mobilecom()回复于 2004-09-04 13:35:30 得分 0
gzTop
30 楼seacaptain(大侠)回复于 2004-09-04 14:25:42 得分 0
sql="insert into chr_news(title,from,date,message,auther,kinds) values('a','b','c','d','e','f')";
换直接插入数据也不能进入数据库.
是不是javabean还是有问题?请高手们能够指点迷津.
配置:sun appserver 8.0,jdk1.4.2,oracle9iTop
31 楼dongdongmaster(冬冬)回复于 2004-09-04 14:42:20 得分 0
看看服务器有没有错误提示Top
32 楼seacaptain(大侠)回复于 2004-09-04 18:37:44 得分 0
TO:dongdongmaster(冬冬) 服务器的提示在哪儿可以看到?Top
33 楼seacaptain(大侠)回复于 2004-09-04 19:15:48 得分 0
sosTop
34 楼seacaptain(大侠)回复于 2004-09-04 21:20:23 得分 0
SOSTop
35 楼mobilecom()回复于 2004-09-04 21:36:20 得分 0
gzTop
36 楼seacaptain(大侠)回复于 2004-09-04 21:42:03 得分 0
没有错误信息时,服务器里的信息为
[#|2004-09-04T21:30:21.130+0800|INFO|sun-appserver-pe8.0.0_01|javax.enterprise.system.stream.out|_ThreadID=12;|
成功|#]
在ORACLE里自动提交的功能是怎么设定的?Top
37 楼seacaptain(大侠)回复于 2004-09-05 09:54:02 得分 0
昨天试试都不行,不知今天试试都行了,郁闷!
新问题:输入中文变乱码了,不知咋解决?Top




