我在oracle9里面建了一个表空间messagebook,里面有一个表user,然后还建了一个用户messageadmin,密码为a,这个用户的默认的表空间就是messagebook.oracle全局数据库ID为GXJXGL.
我写的连接代码如下:
MessageBean.setDriverName("oracle.jdbc.driver.OracleDriver");
MessageBean.setPassword("a");
MessageBean.setUrl("jdbc:oracle:thin:@192.168.1.55:1521:GXJXGL");
MessageBean.setUsername("messageadmin");
.....
String connName=url+","+username+","+password;
Class.forName(driverName).newInstance();
System.out.println(connName);
System.out.println("wanghai");
connection=DriverManager.getConnectionurl,username,password);
.....pStmt=con.prepareStatement("select * from messagebook.user where user=?");
pStmt.setString(1, name);这就是主要代码,但是却总是会有如下错误:java.sql.SQLException: ORA-00903: 表名无效 at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1451)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteDescribe(TTC7Protocol.java:651)
at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:2117)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2331)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:422)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:366)
at com.t.struts.dboper.MessageBean.loginMessage(MessageBean.java:208)
at com.t.struts.action.Messagebook.execute(Messagebook.java:54)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
2007-1-14 23:03:10 org.apache.struts.action.RequestProcessor processException
警告: Unhandled Exception thrown: class java.lang.NullPointerException

解决方案 »

  1.   

    www.9share.net 不错的资料下载网站
      

  2.   

    数据库里面select table_name,owner from all_tables where table_name=upper('user');看看结果是什么
      

  3.   

    select * from messagebook.user where user=? 这个SQL有问题。messagebook.user指的是messagebook用户下的user表,不是messagebook表空间下的user表。请改成:select * from user where user=? 或者 select * from messageadmin.user where user=?
      

  4.   

    oracle 不会乱报错的,表名无效肯定是无效。
    属主属性看看
      

  5.   

    直接用“select   *   from  user   where   user=? ”试试好了,你登录时的用户就是messagebook,所以在SQL中不要再使用messagebook作前缀了。
      

  6.   

    user表真不知道你怎么建出来的。
      

  7.   

    楼主要补一下schema和ts方面的知识,感觉你这里有些混乱。
      

  8.   

    +1 我没有看到你建了messagebook这个用户 ,你只是建了这个表空间。
      

  9.   

    想问一下楼主,user表是怎们建立的。
      

  10.   

    最好不要用系统保留字作为表名,如:table、view等等。
      

  11.   

    查询的时候,表是对应用户的,而不是对应表空间的。也就是什么用户建表就属于什么用户,和表空间没关系。你是先建立user表,再建立messageadmin用户,那user表肯定不属于messageadmin用户。
      

  12.   

    select   *   from   messagebook.user   where   user=?   这个有问题USER 前应该是表的用户,而不是表空间
      

  13.   


     messagebook.user
    这表名?  应该是user吧。然后where userid = ?
      

  14.   

    system.p...
    输出下sql,在plsql等中执行一下看看
      

  15.   

    用户messageadmin下面肯定没有这个表,你直接在数据库中执行一下sql语句试试啊