【问题标题】:Inserting into Oracle database插入Oracle数据库
【发布时间】:2014-03-25 12:17:37
【问题描述】:

我尝试了所有可能的方法,但没有成功。我正在尝试使用 Datasource 将记录插入服务器上的数据库,它适用于 SELECT 语句,但不适用于 INSERT 语句。除了这段代码我还需要做什么吗?

准备好的声明

insertCampusian = connection.prepareStatement("INSERT INTO CAMPUSIAN ( CAMPUSIAN_USER_NAME, CAMPUSIAN_FIRST_NAME, "
                    + "CAMPUSIAN_LAST_NAME, CAMPUSIAN_PASSWORD, CAMPUSIAN_PHONE_NO, CAMPUSIAN_EMAIL, CAMPUSIAN_MARITAL_STATUS, "
                    + "CAMPUSIAN_SEX ) VALUES( ?, ?, ?, ?, ?, ?, ?, ? )");

用于插入

public boolean register(Campusian campusian) {
        try {
            insertCampusian.setString(1, campusian.getUserName());
            insertCampusian.setString(2, campusian.getFirstName());
            insertCampusian.setString(3, campusian.getLastName());
            insertCampusian.setString(4, campusian.getPassword());
            insertCampusian.setString(5, campusian.getPhoneNo());
            insertCampusian.setString(6, campusian.getEmail());
            insertCampusian.setString(7, campusian.getMaritalStatus());
            insertCampusian.setString(8, campusian.getSex());

            boolean result = insertCampusian.execute();
            System.out.println("Is Successful: "+result);
            if (!result) {
                //connection.rollback();
                return false;
            }
        } catch (SQLException ex) {
            System.out.println("ERROR.. "+ex);
            Logger.getLogger(CampusianDataBaseBean.class.getName()).log(Level.SEVERE, null, ex);
        }
        //connection.commit();
        return true;
    }

【问题讨论】:

  • 尝试 insertCampusian.executeQuery() 或 insertCampusian.executeUpdate()
  • 您遇到什么错误?你怎么知道它不起作用?您有权更新表格吗?
  • 我也尝试使用 executeUpdate() 方法,它返回 0,但是当我检查表时发现发现
  • execute() 的返回值并不是你想的那样。这与语句的成功或失败无关,而是语句的第一个“返回值”是什么(更新计数或结果集)。
  • 我检查了使用insert语句插入的数据库表值没有找到

标签: java oracle jdbc


【解决方案1】:

尝试改变这一行

boolean result = insertCampusian.execute();

通过这一行:

int result = insertCampusian.executeUpdate();

阅读更多关于PreparedStatement.executeUpdate()

Java 文档:

执行此 PreparedStatement 对象中的 SQL 语句,该语句必须是 SQL 数据操作语言 (DML) 语句,例如 INSERT、UPDATE 或 DELETE;或不返回任何内容的 SQL 语句,例如 DDL 语句。

【讨论】:

    【解决方案2】:

    使用executeUpdate() 方法将记录写入数据库,使用executeQuery() 进行选择

    【讨论】:

    • 我也尝试过使用 executeUpdate() 方法,它返回 0 但是当我检查表格时发现发现了
    • 数据库加载好,我可以从表中提取数据但我不能插入
    【解决方案3】:

    谢谢大家,我终于找到了问题所在。默认情况下,DML 是自动提交的,因为我禁用了自动提交,所以我在使用 DML 的任何时候都必须这样做。所以我所做的是在每次插入后提交。这样就解决了问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-04
      • 2014-07-09
      • 1970-01-01
      • 1970-01-01
      • 2014-11-26
      • 2018-12-19
      相关资源
      最近更新 更多