当前位置: 首页 > 知识库问答 >
问题:

用Java Postgres我不能插入数据

卢出野
2023-03-14
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

public static void main(String[] args) {

    Connection con = null;
    PreparedStatement pst = null;

    String url = "jdbc:postgresql://localhost/postgres";
    String user = "postgres";
    String password = "thanassis";

    try {


        con = DriverManager.getConnection(url, user, password);

        String stm = "INSERT INTO TEST2(ID) VALUES(?)";
        pst = con.prepareStatement(stm);
        pst.setInt(1, 1);

        pst.executeUpdate(); 

    } catch (SQLException ex) {
        Logger lgr = Logger.getLogger(PreparedStatement.class.getName());
        lgr.log(Level.SEVERE, ex.getMessage(), ex);

    } finally {

        try {
            if (pst != null) {
                pst.close();
            }
            if (con != null) {
                con.close();
            }

        } catch (SQLException ex) {
            Logger lgr = Logger.getLogger(PreparedStatement.class.getName());
            lgr.log(Level.SEVERE, ex.getMessage(), ex);
        }
    }
}
SEVERE: ERROR: relation "test2" does not exist
  Position: 13
org.postgresql.util.PSQLException: ERROR: relation "test2" does not exist
  Position: 13
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2101)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1834)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:510)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:386)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:332)
    at test.Test.main(Test.java:30)

共有1个答案

夏侯博
2023-03-14

您的表称为test2而不是test2。显然,您使用双引号创建了它,这使得Postgres(和其他符合标准的DBMS)区分大小写。

因此,您现在必须在每次引用表时用双引号将表的名称括起来。

String stm = "INSERT INTO \"TEST2\"(ID) VALUES(?)";

这很可能不是您想要的,所以只需重新创建表,而不在标识符周围使用双引号:

CREATE TABLE test2
(
  ...
)
CREATE TABLE "test2"
(
  ...
)
alter table "TEST2" rename to test2;
 类似资料:
  • 尊敬的开发者们。 我要问你一个问题,我觉得很难为我解决,只是因为我不知道为什么要回答,我的意思是什么??让我看看。JBoss文档中的关联没有得到全面的答案:为什么我应该使用JoinTable而不是外键,并且我不完全理解映射是如何工作的,我这样说是什么意思?我知道什么是协会是ManyToMany或ManyToOne等,他们的目的是什么,但他们如何工作和协作彼此不需要回答关于双向或单向或联合或协会,我

  • 我是javafx的新手,所以请原谅我的愚蠢错误,我使用javafx创建了一个注册fxml,但是当我试图存储数据时,它总是会把它扔到我的modelcontroller的catch块中,在那里我有一个sql的insert查询 这是我的modelcontroller将我的注册数据插入数据库 它总是抛出modelContoller中的catch块,我通过调试器检查过它

  • 我在用Android Studio。我试图导入javax.swing.;对于登录页面,所以我尝试编写一个语句来导入,即导入javax.swing.;。 但什么也没发生,这句话让人绝望。 你能教我怎么解决这个问题吗?

  • 我在Spring Data JPA+Hibernate中使用Javers。当我使用curdrepository.save(Collection)时,Javers API会逐一审核集合中的每个对象,这会导致整个插入过程的延迟。 在集成Javers之前,处理100行需要30秒,集成Javers之后需要80秒。