2013-10-11 40 views
0

我試圖保存在數據庫中的價值,但我收到此錯誤值java.sql.SQLException:ORA-01465:無效的十六進制數

我想這

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {           

    try { 
     // TODO add your handling code here: 
     captureScreen("img.jpg"); 
    } catch (Exception ex) { 
     Logger.getLogger(frontendUI.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    try { 
     Class.forName("oracle.jdbc.driver.OracleDriver"); 
     System.out.println("driver loaded"); 
    } 
    catch(ClassNotFoundException ex) { 
     System.out.println("driver not loaded"); 
    } 

    String URL = "jdbc:oracle:thin:@localhost:1521:xe"; 
    String Username = "system"; 
    String Password = "toushif"; 
    try { 
     con = DriverManager.getConnection(URL,Username,Password); 
     st=(Statement) con.createStatement(); 
     String sql="insert into TOU3(file123) values('"+abc+"')"; 
     st.executeUpdate(sql); 
    }           
    catch(Exception e) { 
     e.printStackTrace(); 
    } 

/** 
* @param args the command line arguments 
*/ 
} 
+2

什麼是'abc'?你能發佈一個完整的例子嗎? – Augusto

+0

作爲便箋,您可以考慮使用預準備語句來防止諸如注入等嚴重漏洞。 –

+1

什麼數據類型是'tou3.file123'?你真的這樣做是因爲'系統' - 在'system'或'sys'模式中擁有自己的對象並不是一個好主意...... –

回答

0

嘗試

try { 
     con = DriverManager.getConnection(URL,Username,Password); 
     st=(Statement) con.createStatement(); 
     String sql="insert into TOU3(file123) values("+abc+")"; 
     st.executeUpdate(sql); 
    }           
    catch(Exception e) { 
     e.printStackTrace(); 
    } 
+0

這將適用於「數字」列,儘管準備好的陳述仍然會更好。但錯誤表明該列是「原始」或「blob」。如果它是'number',並且OP只是傳遞一個引用的數字,則會有一個隱含的'to_number()'發生,但它仍然可以工作。 –