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

MySQLとJavaで引用符文字をエスケープする方法

    試して理解させてください...

    着信ファイルには引用符が含まれています。それをデータベースに送信したいとします。データベースからそれを取り戻すとき、あなたはまだそれらの引用をそこに残したいです。

    問題が発生しているのは、データベースとの間だけですか?

    もしそうなら、私は非常に あなたが次の順序で何かをしているのではないかと疑っています:(疑うことを知らない人が誤解したり、自分のアプリケーションに切り取ったり貼り付けたりしないように、免責事項で包んでいます。;))

    悪い-これを行わないでください

    String sql = "insert into foo (bar,baz) values(" +myValue1 + ", " + myValue2 + ")";
    Statement stmt = connection.createStatement();
    stmt.executeUpdate(sql);
    

    悪い-そうしないでください

    もしそうなら、あなたは本当に少なくとも準備されたステートメントのパラメータを使うべきです。 a)すべてのテーブルを削除する悪意のあるゴミに対する脆弱性が低くなります。b)エスケープの問題が発生することはありません。

    String sql = "insert into foo (bar, baz) values( ?, ? )";
    PreparedStatement stmt = connection.prepareStatement(sql);
    stmt.setString(1, myValue1);
    stmt.setString(2, myValue2);
    stmt.executeUpdate();
    

    CLOBやさまざまなデータベース実装の詳細などの場合にも安全であることに注意してください(私はあなたのことを考えています、Oracle>))

    それが他の種類のエスケープ、つまりXMLとの間またはHTMLとの間である場合、それは異なりますが、Web全体で十分に文書化されています。

    または、完全にベースから外れている場合は、サンプルコードをいくつか提供してください。



    1. SQL Serverデータベースにauto_increment主キーを追加するにはどうすればよいですか?

    2. 上位N行をフェッチするデータベースに依存しないSQLクエリはありますか?

    3. Java for OS X 2013-004はSwingアプリケーションにどのように影響しますか?

    4. MySQLで毎月の先物データを前月の時系列に結合する