2016-08-15 3 views
0

I가 내가하려고 할 때 내가 그것을java.sql.SQLSyntaxErrorException : ORA-00911 : 잘못된 문자

st.executeUpdate("INSERT INTO USERT " + "VALUES ('1', 'Simpson', 'Mr', 'Springfield', '2001')"); 

작동 아래의 코드를 시도하지만 때 데이터베이스

에 값을 삽입하기위한 다음과 같은 자바 코드 코드 내가 오류를

java.sql.SQLSyntaxErrorException 얻을 아래 : ORA-00911 : 잘못된 문자를

st.executeUpdate("INSERT INTO USERT (`USERID`, `FIRSTNAME`,`LASTNAME`,`EMAIL`,`PHONE`) VALUES ('2', 'james', 'john', 'myemail', 'myphone')"); 

여기서 스택 오버플로시 제공되는 대부분의 대답은 세미콜론 ;의 문자 배치 오류를 나타냅니다. 즉 link 1link 2은하지 않는 것 link 3 다음은 나에게

에 도움이 내 쿼리를 실행하고 오류 그 밖의 무엇을 이끌 수있는 문제가 될 수 무엇 내 수업

package dbproject; 

import java.sql.*; 

public class jdbcconnection { 

    public static void main(String[] args) { 
     try{ 

     Class.forName("oracle.jdbc.driver.OracleDriver"); 
     java.sql.Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","data1","mypass"); 
     Statement st=con.createStatement(); 

     st.executeUpdate("INSERT INTO USERT (`USERID`, `FIRSTNAME`,`LASTNAME`,`EMAIL`,`PHONE`) VALUES ('2', 'james', 'john', 'myemail', 'myphone')"); 

     //st.executeUpdate("INSERT INTO USERT " + "VALUES ('1', 'Simpson', 'Mr', 'Springfield', '2001')"); 

     con.close(); 

     } 
     catch(Exception e){ 

       System.out.println(e); 

     } 
    } 
} 

의 전체 코드는?

+0

테이블의 데이터 유형은 무엇입니까? Prepared Statement –

+7

을 사용해 볼 수 있습니까? 오라클은 백틱을 사용하지 않습니다. –

+0

@juergend는 훌륭한 해결책입니다. –

답변

1

MySQL과 Oracle은 식별자의 정의가 약간 다릅니다. MySQL에서 인용 부호가없는 식별자는 숫자로 시작하고 따옴표로 묶인 식별자에는 큰 따옴표를 사용할 수 있습니다. 그러나 이들 중 어느 것도 오라클 식별자에서 허용되지 않습니다. MySQL에서, 인용 문자는 backtick (`)이다. SQL 모드 ANSI_QUOTES가 설정된 경우 큰 따옴표를 사용하여 식별자를 인용 할 수도 있습니다. Oracle에서 식별자는 큰 따옴표를 사용하여 인용됩니다.

https://docs.oracle.com/cd/E12151_01/doc.150/e12155/oracle_mysql_compared.htm#i1026354

시도;

st.executeUpdate("INSERT INTO USERT (USERID, FIRSTNAME,LASTNAME,EMAIL,PHONE) VALUES ('2', 'james', 'john', 'myemail', 'myphone')");