2016-08-15 37 views
0

私はそれ以下のコードはjava.sql.SQLSyntaxErrorException:ORA-00911:無効な文字

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

しかし、私がしようと働くしようとすると、私はデータベース

に値を挿入するための次のJavaコードを持っていますORA-00911:無効な文字

私はエラー

java.sql.SQLSyntaxErrorExceptionを取得する以下のコード

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

スタックオーバーフローでここで提供されるほとんどの回答は、セミコロンの文字の置き換えを指します(;)。すなわち、ここで私

を助けていないようですlink 1link 2link 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

を使用してみることができますか?Oracleはバックスティックを使用していません。これは素晴らしい解決策であり、決して考えなかった –

+0

@juergendです。 –

答えて

1

MySQLとOracleは、識別子の定義に若干の違いがあります。 MySQLでは、引用符で囲まれていない識別子は数字で始まり、二重引用符は引用符で囲まれた識別子で使用できます。ただし、これらのどちらもOracle識別子では使用できません。 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')");