0

我试图用当前时间插入数据。我想可能有两个问题。

  1. 字符串前缀 = formatter.format(LocalDateTime.now()); Member member = new Member(prefix + "@test.com", prefix, prefix, LocalDateTime.now()); 这里。但在我看来,LocalDateTime.now() 是数字,因此电子邮件、姓名、密码仅包含数字。所以我尝试直接在Oracle数据库上插入。但是有 ORA-00984。

  2. 关于身份证。我看到了其他问题。始终作为身份主键生成会导致错误,但我不知道为什么会导致错误这是什么问题?

    线程“主”中的异常 org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; 未分类的 SQLException;SQL 状态 [99999];错误代码 [17068];调用中有无效参数;嵌套异常是 java.sql.SQLException: There are invalid arguments in call at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:89) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator. java:81) 在 org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1402) 在 org.springframework.jdbc.core 的 org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) .Jdbc模板。

    私有静态 DateTimeFormatter 格式化程序 = DateTimeFormatter.ofPattern("MMddHHmmss");

    私有静态无效 insertMember() { System.out.println("---------insertMember");

         String prefix = formatter.format(LocalDateTime.now());
         Member member = new Member(prefix + "@test.com", prefix, prefix, LocalDateTime.now());
         memberDao.insert(member);;
         System.out.println(member.getId() + " add data ");
    

    }

    public void insert(Member member) { KeyHolder keyHolder = new GeneratedKeyHolder(); jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection con)throws SQLException{ PreparedStatement pstmt = con.prepareStatement("插入成员(EMAIL,PASSWORD,NAME,REGDATE)" + "values(?,?, ?,?)", new String[] { ""ID""} ); pstmt.setString(1, member.getEmail()); pstmt.setString(2, member.getPassword()); pstmt.setString(3 , member.getName()); pstmt.setTimestamp(4,Timestamp.valueOf(member.getRegisterDateTime())); return pstmt; } },keyHolder); 数字 keyValue = keyHolder.getKey(); member.setId(keyValue.longValue()); }

这是我的数据库表设置

enter codcreate table member(
ID int generated always as identity primary key,
password varchar2(100),
name varchar2(100),
email varchar2(255) unique ,
regdate date default sysdate

);

4

0 回答 0