Javaアプリケーションを使用してテキストファイルを読み込んで、SQLスクリプトと最終的にはMysqlデータベースに出力します。列の1つは、カンマやアポストロフィのような記号を含む、数行の未整形のテキストで構成されています。問題をもっと難しくするために、私は意図的にテキストを読みやすくするために新しい行を追加しました。 MySQLに問題の原因となる文字の組み合わせを無視させる方法がありますか(主にアポストロフィーですが、これらのテキストのブロックに何が含まれるかを知っています)。どのようにして自動的にmysqlテキストブロック内の文字をエスケープするのですか?
2
A
答えて
0
:一言で言えばhttp://dev.mysql.com/doc/refman/5.1/en/string-literals.html
が、これらはここで
\0 An ASCII NUL (0x00) character.
\' A single quote (“'”) character.
\" A double quote (“"”) character.
\b A backspace character.
\n A newline (linefeed) character.
\r A carriage return character.
\t A tab character.
\Z ASCII 26 (Control+Z). See note following the table.
\\ A backslash (“\”) character.
\% A “%” character. See note following the table.
\_ A “_” character. See note following the table.
を置き換えるために、文字でどこが/できない、私はいくつかのJavaプログラムではしばらくの間使用してきたものですパラメータバインディングは使用しないでください。
public static String addSlashesSearchMode(String s) {
return addSlashes(s, true);
}
public static String addSlashes(String s) {
return addSlashes(s, false);
}
private static String addSlashes(String s, boolean search) {
if (s == null) {
return s;
}
String[][] chars;
if(!search) {
chars = new String[][ ]{
{"\\", "\\\\"},
{"\0", "\\0"},
{"'", "\\'"},
{"\"", "\\\""},
{"\b", "\\b"},
{"\n", "\\n"},
{"\r", "\\r"},
{"\t", "\\t"},
{"\\Z", "\\\\Z"}, // not sure about this one
{"%", "\\%"}, // used in searching
{"_", "\\_"}
};
} else {
chars = new String[][ ]{
{"\\", "\\\\"},
{"\0", "\\0"},
{"'", "\\'"},
{"\"", "\\\""},
{"\b", "\\b"},
{"\n", "\\n"},
{"\r", "\\r"},
{"\t", "\\t"},
{"\\Z", "\\\\Z"}, // not sure about this one
};
}
for (String[] c : chars) {
s = s.replace(c[0], c[1]);
}
return s;
}
使用:StringUtils.addSlashes("ke\rn\tny's\"\nnew li\\ne%"))
出力:phpmyadminので表示ke\rn\tny\'s\"\nnew li\\ne\%
出力:
ke
n ny's"
new li\ne\%
注:私はAB本当にわからないこと\Z
実装から、おそらく誰かがそれについてもっと詳しく説明することができます。
1
最初にエスケープスラッシュを追加する必要があります。\ \のように、実際の一重引用符を意味します。あなたがデータベースに入れている文字列をadd_slash()でPHPを使って自動的にエスケープすることができます。このをお読み
0
私はSQLスクリプトを出力したいと思っていますが、一般的に、データベースに直接アクセスして、ドライバがテキストをエスケープする方がはるかに良いと思います。
SQL:update myTable set value1 =?ここで、value2 =?
そしてコードでPreparedStatementを作成し、setParameterを(1、値1)を呼び出すなど
ドライバはアポストロフィやその他の特殊文字をエスケープの世話をします。
関連する問題
- 1. JavaScript/jQueryでどのように文字をエスケープしますか?
- 2. EXTJS、どのように特殊文字をエスケープするには?
- 3. 文字列内の文字の位置を静的にして移動しないようにする
- 4. どのようにmysqlの注文文字列ですか?
- 5. StringBuilderのToStringメソッドが文字列のエスケープ文字をエスケープしないようにするにはどうすればよいですか?
- 6. Mysqlに文字列をエスケープする
- 7. エスケープ文字を文字として印刷するにはどうすればよいですか?
- 8. ドロップダウンリストに応じてテキストボックスの内容を自動的にどのように変更するのですか?
- 9. MySQLの%文字をエスケープする
- 10. XML内でこの(塩)文字列をエスケープするにはどうすればよいですか?
- 11. MySQL自動インクリメントはどのように機能しますか?
- 12. はどのように自動的に
- 13. どのように自動的にJBuilder
- 14. 自動インクリメントの前に文字を自動的に追加
- 15. pythonの "" "" ""のようにPHP文字列をエスケープしていますか?
- 16. 無効なJSON文字列を自動的に修正するにはどうすればよいですか?
- 17. MySQLで特殊文字をエスケープするにはどうすればよいですか?たとえば
- 18. WPFテキストブロックで段落を取得するにはどうすればよいでしょうか? (改行文字?)
- 19. シェルコマンドでm4のスラッシュを自動的にエスケープする
- 20. Unicode文字を同様のEBCDIC 1047文字に自動的にマップします。
- 21. Pythonでの特殊文字の自動エスケープを防ぐ方法
- 22. カスタムヘルパーで自動エスケープ文字を取得する
- 23. Ruby on Rails自動文字エスケープ
- 24. ユニコードのエスケープ文字を含む文字列を通常の文字列に変換する(エスケープ文字なし)
- 25. どのようにAutoCompleteTextViewの文字を動的に大文字にするには?
- 26. WPFのすべての入力を自動的に大文字にする
- 27. 効率的にVBのエスケープ文字@ C#
- 28. jQueryが自動的にAjaxをエスケープしています
- 29. Windows Phone 7の枠線内でテキストブロックを自由に動かす方法
- 30. vhostsファイルのテキストブロックをどのようにコメントアウトしますか?