sql >> データベース >  >> RDS >> Oracle

.nextvalJDBC挿入の問題

    問題は、最初の列が数値データ型であるが、プリペアドステートメントが文字列/VARCHARデータ型を送信していることです。ステートメントはそのまま実行されます。Oracleがnextvalの使用を変換してシーケンス値を取得する機会はありません。

    JavaのPreparedStatement構文による代替手段は次のとおりです。

    sql = "INSERT INTO USER 
            (USER_PK, ACCOUNTNUMBER, FIRSTNAME, LASTNAME, EMAIL ) 
           VALUES 
            (user.nextval, ?, ?, ?, ?)";
    ps = conn.prepareStatement(sql);
    ps.setString(1, accountNumber);
    ps.setString(2, firstName);
    ps.setString(3, lastName);
    ps.setString(4, email);
    

    これは、user は既存のシーケンスです-それに合わせて変更してください。




    1. SQL Serverを使用してソフトウェアバージョンを比較するにはどうすればよいですか?

    2. Postgresで日時をUNIXエポック値に変換するにはどうすればよいですか?

    3. Postgres:バキュームコマンドは死んだタプルをクリーンアップしません

    4. MySQLチュートリアル– MySQLサーバーログの管理:回転、圧縮、保持、削除