복붙노트

[SQL] 인서트 문자열은 사용자 생성 된 변수에있을 때 SQL 삽입에 대한 작은 따옴표를 ... 탈출하는 방법

SQL

인서트 문자열은 사용자 생성 된 변수에있을 때 SQL 삽입에 대한 작은 따옴표를 ... 탈출하는 방법

나는 JDBC를 사용하여 실행 삽입 명령을 구축하고있다. 그것의 일부는 사용자가이 같은 문자열을 사용 할 때까지이 모든 작동 ... 사용자 생성 된 문자열을 연결하는 것입니다 :

a'bcd

String userString="a'bcd";
String insertTableSQL = "INSERT INTO myTable "
                            + "(insertColumn) " 
                            + "VALUES("
                                +"'"+userString+"'"
                                +")";

statement.executeUpdate(insertTableSQL);

해결법

  1. ==============================

    1.당신은 다음 중 하나를 수행 할 수 있습니다 :

    당신은 다음 중 하나를 수행 할 수 있습니다 :

  2. ==============================

    2.당신은 아파치 코 몬즈 랭 라이브러리에서 StringEscapeUtils를 사용할 수 있습니다. 이 사용하여 당신은 당신의 목적을위한 방법 escapeXXX에 대한 HTML, XML, SQL 등 봐의 문자를 탈출 할 수 있습니다. 참고 : 언제 HTML 문자열을 탈출해야합니까?

    당신은 아파치 코 몬즈 랭 라이브러리에서 StringEscapeUtils를 사용할 수 있습니다. 이 사용하여 당신은 당신의 목적을위한 방법 escapeXXX에 대한 HTML, XML, SQL 등 봐의 문자를 탈출 할 수 있습니다. 참고 : 언제 HTML 문자열을 탈출해야합니까?

    참고 : escapeSql가 랭 3 아파치 코 몬즈에서 제거 (commons.lang에서 마이그레이션 StringEscapeUtils.escapeSql를 참조하는 참조 https://commons.apache.org/proper/commons-lang/article3_0.html#StringEscapeUtils.escapeSql)

    예 :

    String str = FileUtils.readFileToString(new File("input.txt"));
            String results = StringEscapeUtils.escapeHtml(str);
            System.out.println(results);
    

    입력:

    <sometext>
    Here is some "Text" that I'd like to be "escaped" for HTML
    & here is some Swedish: Tack. Vars?god.
    </sometext>
    

    산출:

    &lt;sometext&gt;
    Here is some &quot;Text&quot; that I'd like to be &quot;escaped&quot; for HTML
    &amp; here is some Swedish: Tack. Vars&aring;god.
    &lt;/sometext&gt;
    
  3. ==============================

    3.여기에 또 다른 옵션이다 :

    여기에 또 다른 옵션이다 :

    바로이 목적을 위해 설계 네이티브 안드로이드 방법을 사용합니다 :

    DatabaseUtils.sqlEscapeString(String)
    

    여기에 대한 문서가 온라인 :

    이 방법을 사용의 가장 큰 장점은, 내 의견으로는, 때문에 분명 메소드 이름의 자체 문서입니다.

    String userString="a'bcd";
    String insertTableSQL = "INSERT INTO myTable "
                                + "(insertColumn) " 
                                + "VALUES("
                                    +"'"+DatabaseUtils.sqlEscapeString(userString)+"'"
                                    +")";
    
    statement.executeUpdate(insertTableSQL);
    
  4. from https://stackoverflow.com/questions/26331524/how-to-escape-single-quotes-for-sql-insert-when-string-to-insert-is-in-a-user by cc-by-sa and MIT license