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

jspページを介してデータベース上の2つの異なるテーブルにフォームデータを挿入します

    ソリューション1

    2つの挿入操作用に2つの異なるStatementインスタンスを作成します。

    ソリューション2

    1つのStatementインスタンスを再利用する場合は、最後にでリソースを閉じます。 ブロック。実際、最後ににクローズステートメントを入れることは常に良い考えです ブロックするか、単に try-catch-resourceを使用します そのjdk7+が提供する必要があります。

    具体的な質問とは関係ありません

    • jspファイルでJavaコードを使用しないことを強くお勧めします。 「jspサーブレットmvc」という用語を検索します。
    • SQLインジェクション攻撃を回避するには、Statementの代わりにPreparedStatementを使用します。

    ソリューション1の編集:

    最初のtryブロック:
    Statement myStatement = myConnection.createStatement();の下
    add Statement myStatementTwo = myConnection.createStatement();

    2番目のtryブロック:
    change myStatement.executeUpdate(sqlString);
    to myStatementTwo.executeUpdate(sqlString);

    最初のtryブロックの最後のブロックを追加し、そこですべてのリソースを閉じます。コードを編集することは、すべてを最初から書き直すこととほとんど同じです。自分でそれを行うことができれば、最もメリットがあります。

    OPがHTMLコードとデータベースを提供した後に編集

    あなたのDest_has_Categories テーブルのDest_idDest auto_incrementです 列ですが、宛先を参照する外部キーでもあります の主キーidDest 。参照テーブル(ジョイントテーブル)の外部キーはすべきではありません auto_incrementになります。 DBMSによって生成された自動インクリメント値が参照テーブルに存在しない場合、問題が発生します。

    外部キーをauto_incrementではなく、参照テーブルに挿入するときに Dest_has_Categoriesにしてください。 、既存のカテゴリを挿入してください のIDと宛先 のID。

    また、コードを変更するときは、ベストプラクティスとしてSolution2も使用してください。




    1. MySQLで累積合計列を作成する

    2. Huawei GaussDB

    3. データベースで継承をどのように表すことができますか?

    4. なぜsqlplusが接続しないのですか?