java - 使用 JDBC 将数据添加到 postgreSQL 中的表的正确方法?

标签 java sql postgresql jdbc

这是我在这里的第一篇文章,如果我的格式不正确/难以阅读,我会更改它。请告诉我。

我一直在使用 JDBC 尝试使用用户输入数据将基本数据添加到数据库中。用户提供名字和姓氏、电子邮件,并使用随机函数生成用户 ID。

数据库是使用 postgreSQL 创建的。我正在尝试添加到名为 account 的表,其中包含以下列 - user_id (integer)、first_name (varchar(100))、last_name (varchar(100))、email (varchar(500))。

我的程序能够成功连接到数据库,但无法向表中添加数据。

在下面的代码中,firstName、lastName 和 eMail 都是字符串,而 sID 是一个 int。

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

最佳答案

使用 ? 作为参数,而不是连接它们的值。另外,您应该在 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();

关于java - 使用 JDBC 将数据添加到 postgreSQL 中的表的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55581578/

相关文章:

sql - VARCHAR() 子句中指定的数字是什么意思?

mysql - 从 S3 文件构建临时表到 Redshift

java - 使用java代码设置RelativeLayout背景颜色

java - Storm 2.0.0 内存不足

mysql - 避免在查询中进行文件排序

postgresql - pgbouncer 错误 : closing because: client unexpected eof (age=0)

sql - 如果值为null则Postgresql忽略过滤条件

java - 预期为 BEGIN_OBJECT 但在第 1 行第 2 列为 BEGIN_ARRAY(小编辑)

java - 在 mysql 查询中传递 java 字符串变量

mysql - sql 通过从具有多行的表中选择查询插入到表中