插入Oracle数据库

时间:2014-03-25 12:17:38

标签: java oracle jdbc

我尝试了一切,但它没有用。我尝试使用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;
    }

3 个答案:

答案 0 :(得分:1)

尝试更改此行

boolean result = insertCampusian.execute();

通过这一行:

int result = insertCampusian.executeUpdate();

详细了解PreparedStatement.executeUpdate()

Java Doc:

  

在此PreparedStatement对象中执行SQL语句,该对象必须是SQL数据操作语言(DML)语句,例如INSERT,UPDATE或DELETE;或者什么都不返回的SQL语句,例如DDL语句。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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