Вставить значения в mysql Java

Это дает эту ошибку:

"java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0). "

Это код:

public void insertData(int id,String name, String status, String age){



     String sql = "INSERT INTO student_table (id,name,satus,age) VALUES  (id,name,status,age)";

     try (Connection conn1 = this.connects();PreparedStatement Prepst= conn1.prepareStatement(sql)){

     Prepst.setInt(1, id);
     Prepst.setString(2, name);
     Prepst.setString(3, status);
     Prepst.setString(4, age);
     Prepst.executeUpdate();

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

      }

Если я изменю индекс параметра на другое значение, например:

Prepst.setInt(0, id);

то выдает эту ошибку:

" java.sql.SQLException: Parameter index out of range (0 < 1 ). "

----ОБНОВИТЬ -----

Я вставил этот код:

String sql = "INSERT INTO student_table (id,name,satus,age) VALUES  (?,?,?,?)";

Выдает то же самое:

РЕЗУЛЬТАТ

Структура таблицы:

Вставить значения в mysql Java

Пожалуйста, ознакомьтесь с соглашениями об именах Java: oracle.com/technetwork/java/codeconventions-135099.html

Felix Gaebler 05.04.2018 13:15

Версия с (?,?,?,?) верна, но первый параметр находится в позиции 1, а не 0.

khelwood 05.04.2018 13:27

хорошо, извините за то, что я пробовал разные способы. После исправления он дает это -> com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Неизвестный столбец 'satus' в 'списке полей'

Klayd Pro 05.04.2018 13:29

не могли бы вы прислать мне структуру / схему таблицы?

shrikant 05.04.2018 13:30

@KlaydPro Может быть, status, а не satus? В любом случае, на ваш вопрос есть ответ. Пожалуйста, не расширяйте его комментариями «помогите мне отладить мой код, пока я не получу правильный результат».

lexicore 05.04.2018 13:32

хорошо, спасибо вам всем !!

Klayd Pro 05.04.2018 13:35
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
6
54
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Ваше выражение SQL

INSERT INTO student_table (id,name,satus,age) VALUES  (id,name,status,age)

на самом деле не имеет никаких параметров. Попробуйте:

INSERT INTO student_table (id,name,satus,age) VALUES  (?,?,?,?)

@KlaydPro Пожалуйста, прочтите JavaDocs от Подготовленное заявление. В PreparedStatement индексация параметров начинается с 1, а не с 0.

lexicore 05.04.2018 13:27

Попробуй это...

public void insertData(int id,String name, String status, String age){



     String sql = "INSERT INTO student_table (id,name,satus,age) VALUES  (?,?,?,?)";

     try (Connection conn1 = this.connection;PreparedStatement Prepst= conn1.prepareStatement(sql)){

     Prepst.setInt(1, id);
     Prepst.setString(2, name);
     Prepst.setString(3, status);
     Prepst.setString(4, age);
     Prepst.executeUpdate();

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

      }
}

Другие вопросы по теме