1

Java 経由で MYSQL データベースにテキストを挿入しようとしています。

私が入れようとしている変数は TEXT 変数です。私の問題は、挿入しようとすると、 ' を拾い上げて、めちゃくちゃな挿入だと思うことです。

ここに挿入があります:

INSERT INTO TermsAndConditions (name,description,ownerID)  VALUES  ('bar condtions','Don't be stealin my stuff','2')

私が「しない」という言葉を持っていることで、めちゃくちゃだと思います

私がやりたいことは、可能な限り小さな作業を行い、すべての文字が "\'" または "\£" を前に持つ必要があることを文字列に伝えることです (それらの確率は ' だけではありません)。

置換を使用できることはわかっていますが、すべての文字については本当に苦痛です! 彼らは別のより簡単な解決策でなければならないので、私は尋ねています!

ありがとう

4

5 に答える 5

3

あなたの最善の策は、準備されたステートメントを使用することです(SQLインジェクションを避けるために挿入の入力を制御していない場合は、それ自体が良い考えです!)

このサイトでは、その方法の例を提供しています: http://www.exampledepot.com/egs/java.sql/InsertPs.html

あなたの例では、次のようになります。

// Prepare a statement to insert a record
String sql = "INSERT INTO TermsAndConditions (name,description,ownerID)  VALUES  (?,?,?)";
PreparedStatement pstmt = connection.prepareStatement(sql);

// Set the values
pstmt.setString(1, "bar condtions");
pstmt.setString(2, "Don't be stealin my stuff");
pstmt.setString(3, "2");

// Insert the row
pstmt.executeUpdate();
于 2012-08-13T16:40:18.097 に答える
2

一重引用符をエスケープするか、準備済みステートメントを使用する必要があります。

于 2012-08-13T16:40:10.647 に答える
2

特殊文字をエスケープするには、 PreparedStatementを使用する必要があります。

于 2012-08-13T16:40:21.860 に答える
1

準備済みステートメントを使用してみましたか? ここでの問題は、文字列を適切にエスケープすることです。プリペアド ステートメントはそれを処理し、汚れた醜い連結コードを減らすことができます。

http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

于 2012-08-13T16:40:35.380 に答える
-1

次のように一重引用符をエスケープする必要があります。

INSERT INTO TermsAndConditions (name,description,ownerID)  VALUES  ('bar condtions','Don\'t be stealin my stuff','2')
于 2012-08-13T16:40:17.570 に答える