Правильный способ добавить данные в таблицу в PostgreSQL с использованием JDBC? - PullRequest
2 голосов
/ 08 апреля 2019

Это мой первый пост здесь, если мое форматирование не является правильным / трудно читаемым, я изменю его.Пожалуйста, дайте мне знать.

Я играл с JDBC, пытаясь добавить базовые данные в базу данных, используя данные, введенные пользователем.Пользователь указывает имя и фамилию, адрес электронной почты, а идентификатор пользователя генерируется с использованием случайной функции.

База данных была создана с использованием postgreSQL.Я пытаюсь добавить в таблицу с именем account, которая содержит следующие столбцы - user_id (integer), first_name (varchar (100)), last_name (varchar (100)), email (varchar (500)).

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

в следующем коде firstName, lastName и eMail являются строками, а sID являетсявнутр.

state = conx.prepareStatement("INSERT INTO accounts VALUES ("+ sID +","+ firstName + "," + lastName + "," + eMail) + ")");

s.executeUpdate();

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

org.postgresql.util.PSQLException: ERROR: column "v" does not exist
  Position: 36
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2440)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2183)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:308)
    at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:441)
    at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:365)
    at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:143)
    at org.postgresql.jdbc.PgPreparedStatement.executeUpdate(PgPreparedStatement.java:120)
    at Main.main(Main.java:49)
org.postgresql.util.PSQLException: ERROR: column "v" does not exist
  Position: 36

1 Ответ

5 голосов
/ 09 апреля 2019

Используйте ? для параметров вместо объединения их значений. Кроме того, вы должны назвать столбцы в операторе INSERT. Например:

s = conx.prepareStatement(
  "INSERT INTO accounts (id, first_name, last_name, email) " +
  "VALUES (?, ?, ?, ?)"
  );
s.setInt(1, sID);
s.setString(2, firstName);
s.setString(3, lastName);
s.setString(4, email);
int affectedRows = s.executeUpdate();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...