2016-02-01 76 views
-1

我得到這個錯誤:SQL,嘗試比較2 int和得到錯誤「廣東話比較char和INT」

"java.sql.SQLSyntaxErrorException: No están soportadas las comparaciones entre 'INTEGER' y 'CHAR (UCS_BASIC)'. Los tipos deben ser comparables. Además, los tipos de cadena también deben tener una intercalación coincidente. Si la intercalación no coincide, una posible solución es convertir los operandos para forzarlos a la intercalación por defecto (por ejemplo: SELECT tablename FROM sys.systables WHERE CAST(tablename AS VARCHAR(128)) = 'T1')"

我的數據庫表有11個位置,一切都是一個varchar但第一個,這是一個int。

而且iI'從jtable獲取數據,除了col 0之外,其他都是int,其餘都是字符串。

這裏是我的代碼:

int colActual = jTableNombre.getSelectedRow(); 

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

    String nombre = (String) jTableNombre.getModel().getValueAt(colActual,1); 
    String director=(String) jTableNombre.getModel().getValueAt(colActual,2); 
    String año = (String) jTableNombre.getModel().getValueAt(colActual,3); 
    String generos = (String) jTableNombre.getModel().getValueAt(colActual,4); 
    String actores = (String) jTableNombre.getModel().getValueAt(colActual,5); 
    String pais = (String) jTableNombre.getModel().getValueAt(colActual,6); 
    String idioma = (String) jTableNombre.getModel().getValueAt(colActual,7); 
    String doblaje = (String) jTableNombre.getModel().getValueAt(colActual,8); 
    String subtitulos = (String) jTableNombre.getModel().getValueAt(colActual,9); 
    String ubicacion = (String) jTableNombre.getModel().getValueAt(colActual,10); 
    try { 
     Class.forName("com.mysql.jdbc.Driver"); 
     conn = DriverManager.getConnection(DB_URL, USER, PASS); 
     stmt = conn.createStatement(); 
     String sql= "UPDATE MOVIES " + 
      "SET NOMBRE = '"+nombre+"', "+ 
      "DIRECTOR = '"+director+"', "+ 
      "AÑO = '"+año+"', "+ 
      "GENEROS = '"+generos+"', "+ 
      "ACTORES = '"+actores+"', "+ 
      "PAIS = '"+pais+"', "+ 
      "IDIOMA = '"+idioma+"', "+ 
      "DOBLAJE = '"+doblaje+"', "+ 
      "SUBTITULOS = '"+subtitulos+"', "+ 
      "UBICACION = '"+ubicacion+"' "+ 
      "WHERE ID = '"+id+"'"; 
     stmt.executeUpdate(sql);       
     int i= stmt.executeUpdate(sql); 
     System.out.print(i); 
     if (i>0) { 
      JOptionPane.showMessageDialog(null, "Movie Updated"); 
     } 
     else { 
      JOptionPane.showMessageDialog(null, "Movie dindt update"); 
     } 

    } 
    catch(Exception e) { 
     System.out.println(e); 
    } 

} 
+0

您正試圖設置應該是int的id作爲char,因爲錯誤消息告訴您 – Theyna

+2

強制性[Bobby Tables](http://bobby-tables.com/)鏈接... – Amadan

+0

謝謝回答@Theyna你能解釋一下嗎?即時通訊新的java/jdbc和im自己學習。謝謝。 –

回答

0

你缺少在這個代碼片段的id

"WHERE ID = '"+id+"'"; 

嘗試添加它。

+0

謝謝!我意識到我將id設置爲char,愚蠢的錯誤...仍然非常感謝你的幫助! –

0

嘗試修改此行代碼:

 "WHERE ID = '"+id+"'"; 

要:

 "WHERE ID = "+id; 

應該工作。

歡迎來到Java,我也建議你看一下jdbc文檔:,同時也是一個建議,如果你得到和SQLXXX錯誤,總是繼續調試,打印你的SQL命令和嘗試在任何SQL客戶端上執行它,可能有助於查找語法錯誤。

C ya。