2016-02-01 1 views
-1

Я получаю эту ошибку:SQL, пытаясь сравнить 2 ИНТ и получаю ошибку «Не удается сравнить полукокса и ИНТ»

"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, rest - это строки.

И вот мой код:

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 как символ, поскольку сообщение об ошибке сообщает вам – Theyna

+2

Обязательные [Bobby Tables] (http://bobby-tables.com/) link ... – Amadan

+0

Спасибо за Отвечая @ Theyna, вы можете объяснить немного дальше? im new для java/jdbc и im обучения самостоятельно. Благодарю. –

ответ

0

Вы пропускаете id в этом фрагменте кода:

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

Try, чтобы добавить его.

+0

Спасибо! Я понимаю, что я устанавливал id как символ, глупую ошибку ... Еще очень благодарен за вашу помощь! –

0

Попробуйте изменить эту строку кода:

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

To:

 "WHERE ID = "+id; 

Должно работать.

Добро пожаловать на Java, также я предлагаю вам взглянуть на документы jdbc: https://docs.oracle.com/javase/tutorial/jdbc/basics/, а также как предложение, которое у меня есть, если вы получаете и SQLXXX Error, всегда отправляйте debug, печатайте команду SQL и попробуйте выполнить его на любом SQL-клиенте, может быть полезно найти ошибки синтаксиса.

C ya.

Смежные вопросы