プログラミング初心者です。
よろしくお願い致します。
主キーになる列がないので、行No列を作り
select count(*)でレコード数を取得後+1したものを、
insertで登録しようとしていますがうまくいきません。
間違っているところなど、ご指摘いただきたいです。
// Oracle JDBC Driverのロード
Class.forName("oracle.jdbc.driver.OracleDriver");
// データベースへ接続
con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","HR","redhat");
// ステートメントを作成
smt = con.createStatement();
// 変数zにレコード数を入れる
int z = getint("select count(*) from money");
// 変数z(現在のレコード数)+1
z = z + 1;
// SQLを実行して結果を得る
int row_count = smt.executeUpdate("insert into money (key_number, month, day, subject, from_place, to_place, traffic, place, naiyou, money) values ('" + z +"','" + A1 +"','" + B1 + "','" + C1 + "','" + D1 + "','" + E1 + "','" + F1 + "','" + G1 + "','" + H1 + "','" + I1 + "')");
No.1ベストアンサー
- 回答日時:
これ、コンパイルできないでしょう・・・
せめて動くコード書きましょうよ。
ResultSet result = smt.executeQuery("select count(*) as count from money");
int z = 0;
while(result.next()){
z = result.getInt("count");
}
動きました!
ありがとうございますm(__)m
まだ、書かれていることの内容が理解できていないので
きちんとわかるようにしておきたいと思います。
No.4
- 回答日時:
「初心者」と書いてあったのであえて突っ込みませんでしたが、No2,No3さんの回答のように場合によっては同じキーのレコードが作成される場合があります。
そのうち困るかハマれば気づくと思いますので詳しくは説明しません。
(調べればいくらでも情報は転がっているので)
業務アプリなんかでは絶対にやっちゃいけないつくりですね。
No.3
- 回答日時:
どこでどううまくいかないのか。
エラーメッセージ等提示してください。
気づいた点
・key_numberが数値とかの型ならzのシングルクォテーションはいらない気がするけど。
・単純にキーを重複させたくないのなら、シーケンスを使った方がいい
・select countでキーを決めた場合
・レコード削除するとキーが重複する可能性がある
・同時に複数のアクセスがあるとキーが重複する可能性がある
(下の方はjavaの作り方次第だけどね。)
No.2
- 回答日時:
ソースコードに関しては、他のHP等を参考にしてみては?
あと、主キーとのことですが、count(*) + 1では重複する可能性がありますよね。Oracleであれば、シーケンスを使用してみては?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- MySQL 次の時間帯の勝率の合計を求めるSQL文 1 2023/07/04 17:12
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイル書込みで一行もしくは...
-
ADO VBA 実行時エラー3021
-
レコードが存在しなかった場合
-
JSPのNULLレコード表示について...
-
桁数を指定してファイルデータ...
-
DataGridViewにてセル以外をク...
-
ワードの差込印刷で教えて下さ...
-
レコード長を数えてくれる関数
-
レコードセット(ADO.Recordset)...
-
Access を×ボタンで閉じ...
-
サブフォームに新規レコードを...
-
ADODBのRecordset.Deleteのエラ...
-
アクセスでレポートの1印刷内...
-
サブレンジ分割されたNDB(富士...
-
vb.netのdatatableのレコード削...
-
カレントレコードが無い事を判...
-
差し込み印刷のレコード数について
-
データベースへのinfoの入力
-
DataGridViewの内容をDBに反映...
-
[VBA] ADOの Clone と AddNew
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ADO VBA 実行時エラー3021
-
カレントレコードが無い事を判...
-
レコードが存在しなかった場合
-
ファイル書込みで一行もしくは...
-
DataGridViewの内容をDBに反映...
-
差し込み印刷のレコード数について
-
ワードの差込印刷で教えて下さ...
-
レコードセット(ADO.Recordset)...
-
アクセスでレポートの1印刷内...
-
JSPのNULLレコード表示について...
-
Access でレコードセレクタが押...
-
Line Inputで文字化け(助けて...
-
ヘッダレコードとトレーラレコ...
-
DataGridViewの、選択されてい...
-
サブフォームに新規レコードを...
-
ACCESSで大量の更新を行うと「...
-
[VBA] ADOの Clone と AddNew
-
DataGridViewにてセル以外をク...
-
サブレンジ分割されたNDB(富士...
-
VB6.0のIsNull関数に相当するもの
おすすめ情報