回答編集履歴

2

修正の修正

2018/07/31 06:56

投稿

yukihisa
yukihisa

スコア672

test CHANGED
@@ -48,7 +48,11 @@
48
48
 
49
49
  ### 追記
50
50
 
51
+ OracleのJDBCドライバは、Statement.RETURN_GENERATED_KEYSを使用するときに生成された列を返さず、代わりにROWIDを返すそうです。
52
+
53
+ ROWIDは、「ROWIDデータ型」または「UROWIDデータ型」を持つため、getIntできないのではないかと推測されます。
54
+
51
- OracleにはIDタイプがないため、実際に生成されたキーがどのフィールドであるかはわからないため、明示的にどの列が自動生成される列かを指定してあげないといけません。
55
+ そのため、実際に生成されたキーがどのフィールドであるかはわからないので、明示的にどの列が自動生成される列かを指定してあげないといけません。
52
56
 
53
57
  なので、
54
58
 
@@ -68,4 +72,4 @@
68
72
 
69
73
  ```
70
74
 
71
- と変更する必要があるかもしれません。
75
+ と変更する必要があるかもしれません。(Oracleであれば)

1

追記

2018/07/31 06:56

投稿

yukihisa
yukihisa

スコア672

test CHANGED
@@ -43,3 +43,29 @@
43
43
  に変更してやればイケると思います。
44
44
 
45
45
  で、目標としてはそいつをprintではなくてHOUKOKUSAKIにinsertする値として使い回すという感じでしょうか。
46
+
47
+
48
+
49
+ ### 追記
50
+
51
+ OracleにはIDタイプがないため、実際に生成されたキーがどのフィールドであるかはわからないため、明示的にどの列が自動生成される列かを指定してあげないといけません。
52
+
53
+ なので、
54
+
55
+ ```java
56
+
57
+ // SELECT文を準備
58
+
59
+ String sql = "insert into MASTER (NAME) values ('山添')";
60
+
61
+
62
+
63
+ String generatedColumns[] = { "SPECIAL" };
64
+
65
+ stat.execute(sql, generatedColumns);
66
+
67
+
68
+
69
+ ```
70
+
71
+ と変更する必要があるかもしれません。