Quote a string so that it can be used as an identifier or a string literal in SQL statements in Java

Description

The following code shows how to quote a string so that it can be used as an identifier or a string literal in SQL statements.

Example


//from   www. j  a  v a 2  s . co  m
public class Main {
  public static void main(String[] argv) {
    System.out
        .println(quoteStringLiteral("this is a test from java2s.com"));
  }

  /**
   * Quote a string so that it can be used as an identifier or a string
   * literal in SQL statements. Identifiers are surrounded by double quotes
   * and string literals are surrounded by single quotes. If the string
   * contains quote characters, they are escaped.
   * 
   * @param source
   *            the string to quote
   * @param quote
   *            the character to quote the string with (' or ")
   * @return a string quoted with the specified quote character
   * @see #quoteStringLiteral(String)
   * @see IdUtil#normalToDelimited(String)
   */
  static String quoteString(String source, char quote) {
    // Normally, the quoted string is two characters longer than the source
    // string (because of start quote and end quote).
    StringBuffer quoted = new StringBuffer(source.length() + 2);
    quoted.append(quote);
    for (int i = 0; i < source.length(); i++) {
      char c = source.charAt(i);
      // if the character is a quote, escape it with an extra quote
      if (c == quote)
        quoted.append(quote);
      quoted.append(c);
    }
    quoted.append(quote);
    return quoted.toString();
  }

  /**
   * Quote a string so that it can be used as a string literal in an SQL
   * statement.
   * 
   * @param string
   *            the string to quote
   * @return the string surrounded by single quotes and with proper escaping
   *         of any single quotes inside the string
   */
  public static String quoteStringLiteral(String string) {
    return quoteString(string, '\'');
  }

}

/*
 * 
 * Derby - Class org.apache.derby.iapi.util.PropertyUtil
 * 
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements. See the NOTICE file distributed with this
 * work for additional information regarding copyright ownership. The ASF
 * licenses this file to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

The code above generates the following result.





















Home »
  Java Tutorial »
    Java Data Type »




Java Boolean
Java Byte
Java Character
Java Currency
Java Double
Java Enum
Java Float
Java Integer
Java Long
Java Short
Java Auto Grow Array
Java Array Compare
Java Array Convert
Java Array Copy Clone
Java Array Fill
Java Array Search and Sort
Java String Convert
Java String File
Java String Format
Java String Operation
Java BigDecimal
Java BigInteger