我打算用bean访问Oracle数据库,但是当运行到返回结果集的时候或者提交update命令的时候,就报出以下错误,请各位老哥老姐支援!:
程序:
package address;import java.io.*;
import java.sql.*;
import java.util.*;
import java.lang.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class detector extends Object 
{ public detector(){
}

  public void saveaddr(HttpServletRequest request, HttpServletResponse response)
  throws ServletException,IOException
  {
  Connection conn;
  Statement stmt;
      String Stimestamp = "";
      String Saddress = "";
      String SRuser = "";
      String SRhost = "";
      String SRURI = "";
String sql = "";
PrintWriter out = response.getWriter();

   try {

out.println("102");
Class.forName("oracle.jdbc.driver.OracleDriver"); 
conn= DriverManager.getConnection("jdbc:oracle:thin:@172.30.253.107:1521:lvrtest","kbadmin","jhl1000ml");  


if (conn == null)
{
out.println("1009");
}else
{
out.println("1008");
} stmt = conn.createStatement();  
if (stmt == null)
{
out.println("1009");
}else
{
out.println("1008");
}
out.println("103");

sql="select to_char(sysdate,'yyyymmddhh24miss') || dbms_random.string('1',20 ) as ts from dual";  
ResultSet rs=stmt.executeQuery(sql); 
out.println("106");
Stimestamp = rs.getString(1);
//Stimestamp ="20071106153451TUHDLZZTCOLRLRVGOUMY";

      out.println("111");
      out.println(Stimestamp);
      out.println("105");
     
      Saddress = request.getRemoteAddr();
      SRuser = request.getRemoteUser();
      SRhost = request.getRemoteHost();
      SRURI = request.getRequestURI();
 
  sql="insert into tsnoop values('" + Stimestamp +"','" + Saddress + "')";  
out.println("107");
stmt.executeUpdate(sql);
      
      out.println("101");
      
      rs.close();
      stmt.close();
      conn.close();
      
      } catch (Exception e) {
       System.out.println(e.getMessage());
     }       
  }}页面显示到102 1008 1008 103 106

解决方案 »

  1.   

    tomcat的日志里有如下错误描述:
    严重: Error while registering Oracle JDBC Diagnosability MBean.
    javax.management.MalformedObjectNameException: Invalid character '
    ' in value part of property
    at javax.management.ObjectName.construct(Unknown Source)
    at javax.management.ObjectName.<init>(Unknown Source)
    at oracle.jdbc.driver.OracleDriver.registerMBeans(OracleDriver.java:303)
    at oracle.jdbc.driver.OracleDriver$1.run(OracleDriver.java:213)
    at java.security.AccessController.doPrivileged(Native Method)
    at oracle.jdbc.driver.OracleDriver.<clinit>(OracleDriver.java:209)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at bean.temp.<init>(temp.java:14)
    at org.apache.jsp.test_jsp._jspService(test_jsp.java:64)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Unknown Source)
      

  2.   

    conn=   DriverManager.getConnection( "jdbc:oracle:thin:@172.30.253.107:1521:lvrtest ", "kbadmin ", "jhl1000ml ");     
    你引号里面的3项最后怎么都有空格啊,故意的?
      

  3.   

    在Stimestamp=rs.getString(1); 前加一句rs.next();
    或者改成
    while(rs.next()){
      Stimestamp=rs.getString(1);
    }
      

  4.   

      做java程序,我觉得,您最好不要这样做,要做的好,可以采用其它的数据库处理框架啊,hiberante ,toplink ,等其它一些框架,应该很不错的呢,我的建议是提前学习他们,最好是多学习两个的啊,这样对你写程序有好处的啊.!
    顶!