• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:select count(*)の結果に1を足したものを、主キーにしようとしています)

select count(*)の結果に1を足したものを、主キーにしようとしています

このQ&Aのポイント
  • プログラミング初心者です。主キーになる列がないので、行No列を作りselect count(*)でレコード数を取得後+1したものを、insertで登録しようとしていますがうまくいきません。間違っているところなど、ご指摘いただきたいです。
  • Oracle JDBC Driverをロードしてデータベースに接続し、ステートメントを作成します。
  • 変数zにレコード数を入れ、それに+1をします。その後、insert文を実行して結果を得ます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

これ、コンパイルできないでしょう・・・ せめて動くコード書きましょうよ。 ResultSet result = smt.executeQuery("select count(*) as count from money"); int z = 0; while(result.next()){ z = result.getInt("count"); }

noname#177375
質問者

お礼

動きました! ありがとうございますm(__)m まだ、書かれていることの内容が理解できていないので きちんとわかるようにしておきたいと思います。

すると、全ての回答が全文表示されます。

その他の回答 (3)

回答No.4

「初心者」と書いてあったのであえて突っ込みませんでしたが、No2,No3さんの回答のように場合によっては同じキーのレコードが作成される場合があります。 そのうち困るかハマれば気づくと思いますので詳しくは説明しません。 (調べればいくらでも情報は転がっているので) 業務アプリなんかでは絶対にやっちゃいけないつくりですね。

すると、全ての回答が全文表示されます。
  • OKwebb
  • ベストアンサー率44% (92/208)
回答No.3

どこでどううまくいかないのか。 エラーメッセージ等提示してください。 気づいた点 ・key_numberが数値とかの型ならzのシングルクォテーションはいらない気がするけど。 ・単純にキーを重複させたくないのなら、シーケンスを使った方がいい ・select countでキーを決めた場合  ・レコード削除するとキーが重複する可能性がある  ・同時に複数のアクセスがあるとキーが重複する可能性がある (下の方はjavaの作り方次第だけどね。)

すると、全ての回答が全文表示されます。
  • muu731u
  • ベストアンサー率0% (0/1)
回答No.2

ソースコードに関しては、他のHP等を参考にしてみては? あと、主キーとのことですが、count(*) + 1では重複する可能性がありますよね。Oracleであれば、シーケンスを使用してみては?

すると、全ての回答が全文表示されます。

関連するQ&A