2011-09-02 2 views
1

가능한 중복 :
What's the @ in front of a string for .NET?SQL 명령을 작성할 때 주소 기호 @가 사용되는 이유는 무엇입니까?

이 SQL 명령에 @가 무엇을하고 있는지? 그 첫 번째와 두 번째 사건은 같은 목적을 수행합니까? 저장 프로 시저의 매개 변수를 선언 할 때

static DataTable StaffsGetProjectIDHRCoordinators(SqlConnection conn, string targetDatabase) 
{ 
    try 
    { 
     SqlCommand cmd = new SqlCommand(@" 
      SELECT DISTINCT Staff.* 
      FROM Staff 
      INNER JOIN " + targetDatabase.Replace("'", "''") + @".dbo.ProjectHRCoordinator ProjectHRCoordinator 
      ON Staff.StaffID = ProjectHRCoordinator.HRCoordinatorStaffID 
      ORDER BY Staff.FName, Staff.LName", conn); 

      return ExecuteDataTable(cmd); 
    } 
    finally 
    { 
     if (conn.State != ConnectionState.Closed) conn.Close(); 
    } 
} 

은 내가 @ 기호 만 알고 있어요.

+0

을 포함 할 수있다 다른 곳에서 텍스트를 붙여 넣을 때, 특히는 "죄송합니다보다 안전"채택하고 아주 후한를 뿌린다. .NET은 자리 표시자를 크게 지원합니다. 그것을 사용하십시오. 찾고있는 것은 [축 어적 리터럴 문자열]입니다 (http://msdn.microsoft.com/en-us/library/aa691090%28v=vs.71%29.aspx) - 예제를 참조하십시오. –

+0

그것은 인용 문자열 리터럴로 SQL이나 paramaters와는 아무런 관련이 없습니다. http://msdn.microsoft.com/en-us/library/362314fe(v=vs.71).aspx – Brook

+4

@pst : OP가 그 목적이 무엇인지 물으면, 그 이유는 무엇입니까? 코드 작성자이며 코드의 내용을 이해하려고합니다. – Yuck

답변

12

문자열이 축 어적 문자열 리터럴임을 의미합니다. \은 특별한 방법으로 취급되지 않습니다. \n은 새 줄이 아니며 슬래시와 n입니다. 경로에 매우 유용합니다.

은 일반적으로 당신이 "C:\\Windows\\myfile.txt"를 작성하거나 그대로 문자열 리터럴 @"C:\Windows\myfile.txt"으로해야 C:\Windows\myfile.txt 포함 된 문자열을 가지고 있습니다.

은 C#을 사양의 2.4.4.5 String literals에 덮여 :

문자은 큰 따옴표 문자, 0 개 이상의 문자 뒤에 @ 문자으로 구성된 그대로 문자열, 및 닫는 더블 - 따옴표. 간단한 예는 @ "hello"입니다. 축 어적 문자열 리터럴에서 분리 문자 사이의 문자는 그대로 해석되며 따옴표 - 이스케이프 시퀀스 만 예외입니다. 특히 간단한 이스케이프 시퀀스 및 16 진수 및 유니 코드 이스케이프 시퀀스는 축 어적 문자열 리터럴에서 처리되지 않습니다. 축 어적 문자열 리터럴은 여러 줄에 걸쳐있을 수 있습니다.

나는 당신이이 모든 라인을 문자열을 닫지 않고 여러 줄의 스크립트를 쓸 수 있도록 사용하는 인용 된 SQL의 블록이 추가됩니다. 그래서 당신은

string str = @"A 
    B 
    C"; 

는 두 문자열이 매우 다르다는 것을주의

를 작성할 수

string str = "A " + 
    "B " + 
    "C"; 

의 insted! 두 번째는 줄 끝과 정렬 공간을 포함하지만 SQL에서는 문제가되지 않습니다 (SQL의 여러 위치에서 빈 공간이 무시됩니다).

SQL 명령을 한 줄에 작성했을 가능성이 있습니다. 그런 다음 @ 완전히 쓸모가 없었습니다, 그러나 많은 프로그래머들은 그 \ escapes :-)이 나를 울게 할 수

+1

저는 링크 된 페이지의 제목과 텍스트의 인용구를 추가 한 따옴표의 마법의 요정에 감사드립니다! :-) 다른 누군가를 돕는 동안 당신을 도울 좋은 요정이 있다는 것을 항상 아는 것이 좋습니다 :-) :-) – xanatos