2012-07-29 121 views
0

我正尝试使用JDBC将XMLType列读入Clob类型变量。当我这样做时,我收到一个错误....任何想法?使用JDBC读取oracle数据库中的XMLType列

java.sql.SQLException: Invalid column name 
    at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70) 
    at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:131) 
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:197) 
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:261) 
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:269) 
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:490) 
    at oracle.jdbc.driver.OracleStatement.getColumnIndex(OracleStatement.java:3353) 
    at oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl.java:1883) 
    at oracle.jdbc.driver.OracleResultSet.getClob(OracleResultSet.java:358) 
    at persistance.FilmDAO.findFilmsWithXML(FilmDAO.java:626) 

这是我的代码:

public ArrayList<FilmBean> findFilmsWithXML() throws SQLException { 

     ArrayList<FilmBean> filmList = new ArrayList<FilmBean>(); 

     try { 
      currentConnection = ConnectionPool.getInstance().getConnection(); 

      String searchQuery = SqlHelper.getInstance().getSqlQuery(705); 

      System.out.println("Query: " + searchQuery); 

      currentStatement = currentConnection.prepareStatement(searchQuery); 

      currentResultSet = currentStatement.executeQuery(); 

      while (currentResultSet.next()) 
      { 
       FilmBean filmDTO = new FilmBean(); 
       filmDTO.setFilmId(Integer.parseInt(currentResultSet.getString("PK_ID_FILM"))); 
       filmDTO.setPoster(currentResultSet.getString("POSTER")); 
       filmDTO.setTitle(currentResultSet.getString("TITLE")); 
       filmDTO.setXml(currentResultSet.getClob("MYXML")); 
       filmList.add(filmDTO); 
      } 
     } 
     [...] 
    } 

setXml()方法设置一个Clob类型值到在模型中filmDTO对象。

编辑

查询缺少一个别名:

SELECT to_clob("MYXML") As MYCLOB, PK_ID_FILM, POSTER, TITLE FROM FILM Where MYXML is not null 

回答

1

to_clob(XMLElement("MYXML"))后失踪的别名。查询中不存在列MYXML

+0

这个返回'',但是我认为有一个SQL查询的问题,因为我想返回一个XMLType列的内容.... – 2012-07-30 18:04:38

+0

没关系!我改变了我的查询:'SELECT to_clob(“MYXML”)作为MYCLOB',它现在可以正常工作! – 2012-07-30 18:09:03

相关问题