Derbyデータベースからテーブルに新しいレコードを追加しようとしています。そのフィールドの1つでレコード番号を使用する必要があります。例えば。写真のフィールドに画像のパスを保存する必要があります。画像の名前はIDに対応していなければなりません。例えば1.jpg。私は(ファイルの拡張子は、この例で使用されていません)この文をしようとしていた。SQL文でgenerated idを使用するには?
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO Users (name, lastname, email, address, password, photo, lastvisit, status) VALUES ('" + name + "','" + lastname + "','" + email + "','" + address + "','" + DigestUtils.toMd5(password) + "', id, '" + now + "','user')");
しかし、私はエラーを取得:java.sql.SQLSyntaxErrorExceptionを:列「ID」がないか、リストから任意のテーブルです。 .. しかし、この列は間違いなく存在します。エラーの原因は何ですか?
無関係ですが、適切に 'PreparedStatement' **を使用する方法を学んでください。値をSQL文字列に連結しないでください。代わりにプレースホルダ( '?')を使用してください。 –
新しく作成した 'Users'レコードのユーザIDが42の場合、' photo'の値を '' 42 .jpg 'にしたいのですか?そうであれば、insert文が新しいIDを返すか、またはトリガーでそれを行う必要があるかのいずれかのupdate文が必要です。 – Andreas
生成されたIDを取得する方法については、http://stackoverflow.com/questions/1915166/how-to-get-the-insert-id-in-jdbcを参照してください。その後、その値を後続のステートメントで使用します。 –