2011-05-05 39 views
0

누구나 jdbc 드라이버를 사용하여 oracle 9.0.1.1에 연결할 수 있습니까?아주 작은 Jdbc 문제

저는 jdk1.6을 사용하고 있습니다.

나는 classes12ojdbc6을 사용했지만 오류의 원인입니다. 다음

는 콩의 데이터베이스 관련 코드 간단한 자바 응용 프로그램에서 작동하지만 난 JSF 페이지 내에서 사용할 때 자바 널 포인터 예외 오류를주고있다 다음은 내 코드

입니다. 미리 감사드립니다.

Bean 클래스 :

import java.io.Serializable; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
@ManagedBean 
@SessionScoped  

public class Db implements Serializable{ 
    int eId; 
    public int geteId() { 
     return eId; 
    } 
    public void seteId(int eId) { 
     this.eId = eId; 
    } 
    public static Connection getConnection() throws Exception { 
     String driver = "oracle.jdbc.driver.OracleDriver"; 
     String url = "jdbc:oracle:thin:@localhost:1521:globldb3"; 
     String username = "scott"; 
     String password = "tiger"; 
     Class.forName(driver); 
     Connection conn = DriverManager.getConnection(url, username, password); 
     return conn; 
     } 
    public String addEmployee() throws Exception{ 
     Connection conn = null; 
     PreparedStatement pstmt = null; 
      try { 
        int a = this.eId; 
        conn = getConnection(); 
        String query = "INSERT INTO c(n) VALUES(?)"; 
        pstmt = conn.prepareStatement(query); 
        pstmt.setInt(1,a); 
        pstmt.executeUpdate(); // execute insert statement 
        return "success"; 
       } catch (Exception e) { 
         e.printStackTrace(); 
         return "failure"; 
       } finally { 
         pstmt.close(); 
         conn.close(); 
       } 
    }  
} 

다음은 ojdbc6.jar를 사용하는 동안

<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:ui="http://java.sun.com/jsf/facelets" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:f="http://java.sun.com/jsf/core"> 
<body> 
<h:form> 
<p>Enter value <h:inputText value="#{db.eId}"/> </p> 
<p> <h:commandButton value="Add record" action="#{db.addEmployee}"/> </p> 
</h:form> 
</body> 
</html> 

다음과 같은 예외가 comeing 내 JSF 페이지입니다.

은 java.sql.SQLException : ORA-03120 : 두 작업 변환 루틴 : 정수 오버 플로우

당신은 classes12를 사용해서는 안

java.sql.SQLException: ORA-03120: two-task conversion routine: integer overflow 

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:440) 
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396) 
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:837) 
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:445) 
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:191) 
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:523) 
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207) 
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1010) 
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1315) 
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3576) 
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3657) 
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350) 
at erpJavaFiles.Employee.addEmployee(Employee.java:113) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.apache.el.parser.AstValue.invoke(AstValue.java:262) 
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278) 
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) 
at  javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88) 
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) 
at javax.faces.component.UICommand.broadcast(UICommand.java:315) 
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:787) 
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1252) 
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) 
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:306) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:558) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:259) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:237) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:281) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
at java.lang.Thread.run(Thread.java:619) 
+9

오류가 무엇인지 알려주세요. – skaffman

+1

ojdbc6.jar는 Oracle 9와 JDK 6에서 잘 작동해야합니다. 예외 추적을 연결하고 스택하는 데 사용하는 코드가 실제로 유용합니다. Jerry Maguire가 말한 것처럼 "도와 줘." – Paul

+0

질문에 예외를 추가했습니다. 친절하게 살펴보십시오. – Adnan

답변

7

try ojdbc14.jar. 그것은 분명히 작동 할 것입니다.

+3

그가 어떤 예외를 겪고 있는지 알지 못하면 어떻게 "확실히"말할 수 있습니까? 어쩌면 그의 연결 매개 변수가 잘못되었을 수도 있습니다. – Paul

+0

정답은 무엇입니까? 그가 ojdbc6.jar을 실행하고 있는데 ojdbc14.jar이 왜 작동하지 않았습니까? – Paul

3

위의 예외의 스택입니다 추적 다음 .항아리; 그것은 JDK 1.2 용입니다. ojdbc6.jar은 원하는 것입니다. 그것은 JDK 6에 적합합니다.

0

테이블 ca의 값과 n의 데이터 형식을 확인하십시오. n 열에는 길이가 설정되어 있어야합니다 (예 : NUMBER (10,0)).

SQL Developer에서도 쿼리를 시도합니다. 아직 가지고 있지 않다면 here을 얻을 수 있습니다.

0

서버 및 클라이언트의 "endianness"가 다른 경우이 예외가 발생하는 Oracle 9i 버전에는 Oracle Bug # 5671074가 있습니다.

당신의 케이스가 아닌가요?