문제

컴파일하지 않는 다음 문자열이 있습니다.

String formLookupPull = @"SELECT value1, '"+tableName+"', '"+columnName+"' FROM lkpLookups WHERE ""table"" = '" + tableName + "' and ""field"" = '" + columnName + "';";

불쾌한 섹션은 다음과 같습니다.

""table"" =

그리고

""field"" = 

컴파일러가 탈출 시퀀스에서 모두 혼합되고 있습니다. 누구든지 무엇이 잘못되었는지 볼 수 있습니까?

도움이 되었습니까?

해결책

문제는 당신이 연결하는 모든 문자열이 구두 문자 리터럴, 연결의 첫 번째 부분만이입니다.

다시 말해,

@"SELECT value1, '"

유일한 것입니다 구두 최종 문자열을 작성하려면 전체 문자에서 문자.

나머지 문자열 앞에 @를 추가하여 모든 구두로 만들어야합니다.

다음과 같이 보일 것입니다.

String formLookupPull = @"SELECT value1, '"+tableName+ @"', '"+columnName+ @"' FROM lkpLookups WHERE ""table"" = '" + tableName + @"' and ""field"" = '" + columnName + @"';";

다른 팁

제목 질문을 해결하려면 ...

구두 문자 문자 그대로 인용문을 피하려면 인용문을 사용하십시오. "" (두 인용 문자입니다)

string a = @"He said ""Hi!""..."; // He said "Hi!"...

보다 MSDN 탈출 등에 대한 자세한 내용은

게시 된 코드에서 유일한 구두 코드는 첫 번째 코드입니다. @ 전에). 후속 문자열은 구두가 아니므로 적절한 탈출 순서는 \".

당신은 그것을 더 예쁘게 보이게 할 수 있습니다 string.Format:

String formLookupPull = 
   string.Format(@"SELECT value1, '{0}', '{1}' FROM lkpLookups" +
                 @"WHERE ""table"" = '{0}' and ""field"" = '{1}';", 
                 tableName, columnName)

당신은 사용하고 싶습니다 \" 인용문을 피하기 위해 "".

이와 같이:

.. FROM lkpLookups WHERE \"table\" = '" ..

편집하다:

추가 설명 :

당신은 단지 만 있습니다 @ 모든 문자열의 첫 번째로 당신은 연결하고 있습니다. 문자 그대로 (an @ 앞쪽) 당신은 이중 인용문으로 따옴표를 탈출합니다. 정상적인 문자열에서는 슬래시 쿼트입니다.

예를 들어.

string s = @"this is a literal string with ""quotes"" in it, " 
         +  "and this is a normal string with \"quotes\" in it";

string t = @"two literal strings" + @", concatenated together.";

첫 번째 인용문 후에, @ 기호는 더 이상 사용되지 않으므로 탈출 문자를 자유롭게 사용할 수 있습니다. "테이블"에 래핑 한 [테이블] 및 [필드]에 래핑하거나"캐릭터를 a 로 탈출하십시오.

String formLookupPull = @"SELECT value1, '" + tableName + "', '" + columnName + "' FROM lkpLookups WHERE [table] = '" + tableName + "' and [field] = '" + columnName + "';";

SQL 매개 변수를 사용할 수없는 경우 String.format은 순수한 "+ 연결"보다 깨끗하고 읽기 쉬울 수 있습니다.

string formLookupPull = 
  string.Format(@"SELECT value1, '{0}', '{1}' 
                       FROM lkpLookups 
                   WHERE ""table"" = '{0}' AND ""field"" = '{1}';",
                tableName, columnName);
String formLookupPull = @"SELECT value1, '"+tableName+"', '"+columnName+"' FROM lkpLookups WHERE \"table\" = '" + tableName + "' and \"field\" = '" + columnName + "';";

또한이 쿼리를 구축하기 전에이 변수를 올바르게 탈출하고 있다고 믿습니다 :)

왜 열의 문자 이름을 인용 하는가?

"value1," + tablename + "," + columnname + "a table = ' + tablename +"'및 field = ' "= columnname +"'; ";

테스트되지 않았지만 아이디어를 얻을 것이라고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top