java.sql.SQLSyntaxErrorException: столбцы типа 'INTEGER' не могут содержать значения типа 'CHAR' - PullRequest
1 голос
/ 09 мая 2019

Я хочу иметь возможность обновлять свою таблицу, используя коды, которые я пробовал, но она всегда показывает ошибку точно так же, как

Я пробовал подготовленное утверждение, но я не знаю, правильно ли я это сделал.

Таким образом, код выглядит следующим образом:

try{
    String sql = "update master.Employees set EmployeeName = '" + jTextField1.getText() + "'" + ",Address = '" + jTextField3.getText() + "'" + ",PhoneNumber = '" +
            jTextField4.getText() + "'" + ",EmailAddress = '" + jTextField5.getText() + "'" + "WHERE EmployeeID = " + jTextField1.getText();
    Statement update = myconObj.createStatement();
    update.executeUpdate(sql);
}
catch (SQLException e){
    e.printStackTrace();
}

Я попытался ввести идентификатор сотрудника, который является первичным ключом моей базы данных, чтобы иметь возможность обновления, но он всегда показывает ошибку:

java.sql.SQLSyntaxErrorException: столбцы типа 'INTEGER' не могут содержать значения типа 'CHAR'.

Я думаю, что перепутал структуру захвата, потому что это показывает этоодин

¬í sr %org.netbeans.lib.ddl.impl.CreateTable¢”j ™   xr +org.netbeans.lib.ddl.impl.ColumnListCommand2›Œî]2)³ L columnst Ljava/util/Vector;xr )org.netbeans.lib.ddl.impl.AbstractCommandø8¦Œ·q•ª Z executionWithExceptionZ    newObjectL addpropst Ljava/util/Map;L formatt Ljava/lang/String;L nameq ~ L ownerq ~ L quoteStrq ~ L spect ,Lorg/netbeans/lib/ddl/DatabaseSpecification;xp pt :create table [{object.owner}.]{object.name}
(
    {columns}
)t  EMPLOYEESpppsr java.util.VectorÙ—}[€;¯ I capacityIncrementI elementCount[ elementDatat [Ljava/lang/Object;xp       ur [Ljava.lang.Object;ÎXŸs)l  xp   
sr %org.netbeans.lib.ddl.impl.TableColumn;¦±5‘b  I decsizeZ nullableI sizeI typeL checkeq ~ L constraintColumnsq ~ L defvalq ~ xr -org.netbeans.lib.ddl.impl.AbstractTableColumn¸Ô§y[k  Z   newColumnZ  newObjectL addpropsq ~ L cnameq ~ L formatq ~ L nameq ~ L otypeq ~ L refcolq ~ L reftabq ~ xppt 
EMPLOYEEIDt ³{column.name} {column.type}[({column.size}[,{column.decsize}])][ {column.type.suffix}][ default {default.value}][ {column.notnull}not null][ check ({check.condition})] primary keyt 
EMPLOYEEID_PKt PRIMARY_KEYpp        
   pppsq ~ pt EMPLOYEENAMEt §{column.name} {column.type}[({column.size}[,{column.decsize}])][ {column.type.suffix}][ default {default.value}][ {column.notnull}not null][ check ({check.condition})]q ~ t COLUMNpp       2   pppsq ~ pt ADDRESSq ~ q ~ q ~ pp       2   pppsq ~ pt PHONENUMBERq ~ q ~ q ~ pp       
   pppsq ~ pt EMAILADDRESSq ~ q ~ q ~ pp       2   pppsq ~ pt IMAGEq ~ q ~ !q ~ pp       2   pppppppx

Ответы [ 5 ]

1 голос
/ 09 мая 2019

Попробуйте использовать PreparedStatement, как показано ниже:

 try
      {
          String sql = "UPDATE `master.Employees` SET `EmployeeName`=?, `Address `=?, `PhoneNumber`=?, `EmailAddress`=? WHERE `EmployeeID `=?";
         PreparedStatement ps = con.prepareStatement(sql);
         //putting value for all placeholder (?)
         ps.setString(1,jTextField2.getText());
         ps.setString(2,jTextField3.getText());
         ps.setInt(3,Integer.parseInt(jTextField4.getText()));
         ps.setString(4,jTextField5.getText());
         ps.setInt(5,Integer.parseInt(jTextField1.getText()));

         int i=0;
         i = ps.executeUpdate();
         if(i>0)
             {
         //do   something   
             }
     }
     catch(Exception e)
      {

      e.printStackTrace();

      }
0 голосов
/ 09 мая 2019

Проблема может быть в интервале.

вместо

+ "WHERE EmployeeID = " + jTextField1.getText();

вы должны написать

+ " WHERE EmployeeID = " + jTextField1.getText();

0 голосов
/ 09 мая 2019

Вам необходимо преобразовать значение jTextField1.getText (), чтобы передать integer. Вы можете сделать это следующим образом перед обновлением

int id = Integer.parseInt (jTextField1.getText ());
0 голосов
/ 09 мая 2019

возможно, другое поле - Integer, вы можете проверить PhoneNumber, это обозначено Integer?

0 голосов
/ 09 мая 2019

Вызов функции jTextField1.getText() в основном возвращает объект String, и база данных ожидает целое число.Попробуйте Integer.parseInt(jTextField1.getText()) вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...