Java MessageFormat-작은 따옴표 사이에 값을 삽입하려면 어떻게해야합니까?
java.text.MessageFormat 객체를 사용하는 데 문제가 있습니다.
SQL 삽입 문을 만들려고합니다. 문제는 다음과 같이 할 때입니다.
MessageFormat messageFormat = "insert into {0} values ( '{1}', '{2}', '{3}', {4} )";
Object[] args = { str0, str1, str2, str3, str4 };
String result = messageFormat.format(args);
나는 이것을 가치로 얻는다 result
:
"insert into <str0> values ( {1}, {2}, {3}, <str4> )"
보시다시피 문제는 작은 따옴표로 묶인 대상 위치가 인수로 대체되지 않는다는 것입니다. 나는 다음 ''{1}''
과 같이 큰 따옴표를 사용해 보았습니다. 그리고 다음 과 같은 이스케이프 문자 : \'{1}\'
그러나 여전히 같은 결과를 제공합니다.
편집 : 나는 또한 시도했다 언급하는 것을 잊었다 '''{1}'''
. 결과 : "insert into <str0> values ( '{1}', '{2}', '{3}', <str4> )"
. 원래 따옴표를 유지하지만 여전히 값을 삽입하지 않습니다.
이 문제를 어떻게 해결할 수 있습니까? 기록을 위해 JDK 6u7을 사용하고 있습니다.
나는 큰 따옴표를 시도했지만 잘 작동했습니다.
MessageFormat messageFormat = new MessageFormat("insert into {0} values ( ''{1}'', ''{2}'', ''{3}'', {4} )");
Object[] args = {"000", "111", "222","333","444","555"};
String result = messageFormat.format(args);
결과는 다음과 같습니다.
insert into 000 values ( '111', '222', '333', 444 )
이것이 필요한 것입니까?
이것이 측면에서 벗어난 경우 죄송하지만 이미 JDBC에있는 PreparedStatement를 복제하려는 것 같습니다.
데이터베이스에 대해 실행하기 위해 SQL을 생성하려는 경우 PreparedStatement를 살펴볼 것을 제안합니다. 이미 수행하려는 작업을 수행합니다 (약간 다른 구문 사용).
이게 당신이하는 일이 아니라면 미안 해요, 제가 지적 할 줄 알았어요.
String 내에서 작은 따옴표 쌍을 사용하여 작은 따옴표를 제외한 임의의 문자를 인용 할 수 있습니다. 예를 들어 패턴 문자열
"'{0}'"
은 FormatElement가"{0}"
아니라 string을 나타냅니다 . 작은 따옴표 자체는 전체에서 큰 따옴표로 표시되어야합니다 . 예를 들어, 패턴 문자열 의 순서로 해석됩니다 (인용의 시작과 왼쪽 중괄호), (작은 따옴표), 및 (오른쪽 중괄호 및 인용 끝), 하지 및 (중괄호를 좌우 인용 된) : 문자열 이 아니라 표현 .''
String
"'{''}'"
'{
''
}'
'{'
'}'
"{'}"
"{}"
보낸 사람 : MessageFormat (Java Platform SE 8)
삼중 작은 따옴표 문자 사용 :
MessageFormat messageFormat = "insert into {0} values ( '''{1}''', '''{2}''', '''{3}''', '''{4}''' )";
가장 먼저 떠오른 것은 str1, str2, str3을 작은 따옴표로 둘러싸도록 변경하는 것입니다.
Object [] args = {str0, " '"+ str1 + "'", " '"+ str2 + "'", " '"+ str3 + "'", str4};
물론 쿼리 문자열에서 작은 따옴표를 제거하십시오.
'program tip' 카테고리의 다른 글
ByteArrayOutputStream에서 파일 만들기 (0) | 2020.11.30 |
---|---|
비 차단 IO 대 비동기 IO 및 Java 구현 (0) | 2020.11.30 |
Android 앱의 경우 SQLITE 데이터베이스를 내림차순으로 정렬하려면 어떻게해야합니까? (0) | 2020.11.29 |
Linux의 JAVA_HOME 디렉토리 (0) | 2020.11.29 |
루비에서 임의의 10 자리 숫자를 생성하려면 어떻게해야합니까? (0) | 2020.11.29 |