반응형
SQLite 쿼리에 사용하기 위해 작은 따옴표 문자를 이스케이프 처리
데이터베이스 스키마 (지금까지 하나의 테이블 만)와 해당 테이블의 INSERT 문을 하나의 파일로 작성했습니다. 그런 다음 다음과 같이 데이터베이스를 작성했습니다.
$ sqlite3 newdatabase.db
SQLite version 3.4.0
Enter ".help" for instructions
sqlite> .read ./schema.sql
SQL error near line 16: near "s": syntax error
내 파일의 16 행은 다음과 같습니다.
INSERT INTO table_name (field1, field2) VALUES (123, 'Hello there\'s');
문제는 작은 따옴표의 이스케이프 문자입니다. 또한 작은 따옴표 ( )
\\\'
대신 이중 이스케이프를 시도했지만
\'
작동하지 않았습니다. 내가 무엇을 잘못하고 있지?
작은 따옴표를 두 배로 늘리십시오 (많은 데이터베이스가 그렇게 생각합니다).
INSERT INTO table_name (field1, field2) VALUES (123, 'Hello there''s');
에서 관련 인용 :
문자열 상수는 문자열을 작은 따옴표 ( ')로 묶어 형성합니다. 파스칼에서와 같이 문자열 내에 작은 따옴표를 두 개의 작은 따옴표를 넣어서 인코딩 할 수 있습니다. 백 슬래시 문자를 사용하는 C 스타일 이스케이프는 표준 SQL이 아니므로 지원되지 않습니다. BLOB 리터럴은 16 진 데이터를 포함하고 단일 "x"또는 "X"문자가 앞에 오는 문자열 리터럴입니다. ... 리터럴 값은 "NULL"토큰 일 수도 있습니다.
작은 따옴표를 두 배로 늘려 탈출하고 싶다고 생각합니다.
INSERT INTO table_name (field1, field2) VALUES (123, 'Hello there''s');
문자열의 모든 ( ')를 바꾸려면 다음을 사용하십시오.
.replace(/\'/g,"''")
예:
sample = "St. Mary's and St. John's";
escapedSample = sample.replace(/\'/g,"''")
데이터베이스에 삽입 해야하는 루프 또는 json 문자열이있는 경우를 대비하여. 문자열을 작은 따옴표로 바꾸십시오. 여기 내 해결책이 있습니다. 작은 따옴표가 포함 된 문자열이있는 경우의 예입니다.
String mystring = "Sample's";
String myfinalstring = mystring.replace("'","''");
String query = "INSERT INTO "+table name+" ("+field1+") values ('"+myfinalstring+"')";
이것은 C #과 Java에서 나를 위해 작동합니다.
C #에서는 다음을 사용하여 작은 따옴표를 큰 따옴표로 바꿀 수 있습니다.
string sample = "St. Mary's";
string escapedSample = sample.Replace("'", "''");
출력은 다음과 같습니다.
"St. Mary''s"
그리고 Sqlite와 직접 작업하는 경우; 문자열 대신 객체로 작업하고 DBNull과 같은 특별한 것을 잡을 수 있습니다.
private static string MySqlEscape(Object usString)
{
if (usString is DBNull)
{
return "";
}
string sample = Convert.ToString(usString);
return sample.Replace("'", "''");
}
참고 URL :
https://stackoverflow.com/questions/603572/escape-single-quote-character-for-use-in-an-sqlite-query
반응형
'programing' 카테고리의 다른 글
구현 된 순수 가상 기능 (0) | 2020.06.02 |
---|---|
조각 및 마무리 하위 활동의 startActivityForResult ()는 조각에서 onActivityResult ()를 호출하지 않습니다. (0) | 2020.06.02 |
ASP.NET MVC의 세션 변수 (0) | 2020.05.27 |
정규식-특정 패턴을 제외한 모든 것을 일치시키는 방법 (0) | 2020.05.27 |
HTML 도우미에서 URL 생성 (0) | 2020.05.27 |