javaで、自動採番のセルの番号を取得することになりました。
やりたいこと:自動採番になっているMASTERテーブルの番号を取得したいです。
エラー内容:
Exception in thread "main" java.sql.SQLException: 列の型が無効です。: getInt not implemented for class oracle.jdbc.driver.T4CRowidAccessor
at oracle.jdbc.driver.GeneratedAccessor.getInt(GeneratedAccessor.java:372)
at oracle.jdbc.driver.GeneratedStatement.getInt(GeneratedStatement.java:197)
at oracle.jdbc.driver.GeneratedScrollableResultSet.getInt(GeneratedScrollableResultSet.java:244)
at dao.SampleDAO.main(SampleDAO.java:32)
SampleDAO.java:32は、BigDecimal id = rs.getBigDecimal(1);の部分です。
Java
1package dao; 2 3package dao; 4 5import java.math.BigDecimal; 6import java.sql.Connection; 7import java.sql.ResultSet; 8import java.sql.SQLException; 9import java.sql.Statement; 10 11/** 12* SuperDAOにドライバーの接続情報は記載しています。 13**/ 14 15public class SampleDAO { 16 17 public static void main(String[] args) throws ClassNotFoundException, SQLException { 18 19 ConnectManager connectManager = new ConnectManager(); 20 Connection conn = null; 21 conn = connectManager.getConn(); 22 Statement stat = conn.createStatement(); 23 24 // SELECT文を準備 25 String sql = "insert into MASTER (NAME) values ('尾山')"; 26 27 stat.execute(sql, Statement.RETURN_GENERATED_KEYS); 28 29 30 ResultSet rs = stat.getGeneratedKeys(); 31 32 try { 33 while(rs.next()) { 34 rs.getInt(1); 35 BigDecimal id = rs.getBigDecimal(1); 36 System.out.println(id); 37 38 } 39 40 } finally { 41 rs.close(); 42 } 43 } 44} 45
sql
1 2CREATE TABLE MASTER( 3 SPECIAL NUMBER GENERATED ALWAYS AS IDENTITY MINVALUE 1 MAXVALUE 99999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE NOKEEP NOSCALE NOT NULL 4 ,NAME nvarchar2(5))