2013-05-17 3 views

답변

0

OK, 내 앞에 포스터에 악의가 (이 당신이 그것을 지정하지 않으면 매개 변수 이름에 @를 추가 SqlParameter에 개체에 문서화되지 않은 기능입니다.) 그러나 나는 시도 할 것이다 가능한 한 간단하게 설명하여 7 살짜리도 이해합니다. : 당신이 "다만 정확한 데이터 유형 또는 정확한 이름이 사용됩니다 무엇을 명확하게하지"을 때 .SQL에서 내 경험 ' @'에서

사용됩니다. "Later"당신은 '@'의 정확한 값이 무엇인지 지적하고 있습니다.

예를 들어, 누군가가 그것을받은 모든 사람의 이름이 들어있는 거대한 .SQL 쿼리를 개발했다고 가정 해 봅니다.모든 사람이 단지 @YOURNAME에서 자신의 이름을 작성하고 자동으로 (시작시)에 쿼리를 변환합니다 위해

SELECT column_name,column_name FROM table_name WHERE column_name = @YOURNAME; 

@YOURNAME = 'John Doe'; 

그래서,이 경우, 그것은 쉽게 :

SELECT column_name,column_name FROM table_name WHERE column_name = 'John Doe'; 

PS : 나는 미안 해요 구문 오류 및 잘못된 용어에 대해서는 잘 알고 있지만 지금까지 이해 했어야합니다. :)

+1

변수 사용 예제는 변수를 실제로 사용할 수있는 방법을 보여주지 않습니다. 'where' 조건이 필요하다면 변수 나 리터럴 값을 사용할 수 없습니다. 예를 들어'... where column_name = @ YOURNAME'과 같은 것이 필요할 것입니다. – Guffa

+0

네 말이 맞다! :} – Placeholder

4

다음을 참조하십시오 경우 ParameterName 양식 @paramname에 지정된 SqlParameter.ParameterName Property - MSDN

. 매개 변수를 사용하는 SqlCommand를 실행하기 전에 매개 변수를 설정해야합니다. 파라미터 의 값 @ 경우

SqlCommand cmd = new SqlCommand("Select * from yourTable where ID = @ID", conn); 
                    ^^^^^^^ 
                //This identifies the parameter 

다음은 추가 파라미터 이름이 제공되지 않는 명령 텍스트에 differentiatd되도록

@

SqlCommand 의해 사용된다. 다음 소스 코드를 봐 (taken from here)

internal string ParameterNameFixed { 
      get { 
       string parameterName = ParameterName; 
       if ((0 < parameterName.Length) && ('@' != parameterName[0])) { 
        parameterName = "@" + parameterName; 
       } 
       Debug.Assert(parameterName.Length <= TdsEnums.MAX_PARAMETER_NAME_LENGTH, "parameter name too long"); 
       return parameterName; 
      } 
     } 

편집 :

당신은 다음의 경우를 고려 매개 변수 @ 기호를 사용하지 않는 경우.

using (SqlConnection conn = new SqlConnection(connectionString)) 
     { 
      using (SqlCommand cmd = new SqlCommand()) 
      { 
       conn.Open(); 
       cmd.CommandText = "SELECT * from yourTable WHERE ID = ID"; 
       cmd.Connection = conn; 
       cmd.Parameters.AddWithValue("ID", 1); 
       DataTable dt = new DataTable(); 
       SqlDataAdapter da = new SqlDataAdapter(cmd); 
       da.Fill(dt); 
      } 
     } 

SELECT * from yourTable WHERE 1=1로 번역하기 때문에 위의 당신이 매개 변수 ID에 대한 위의 @를 사용하는 경우 SQL Server의 ID =1

0

변수 및 매개 변수에 대한 레코드 만 얻을 것이다, 모든 레코드를 가져옵니다 앞에 @ 기호가 붙습니다.

예 :

create procedure Something 
    @Id int, 
    @Name varchar(100) 
as 
... 

데이터베이스와 통신하는 C# 코드에서 매개 변수 개체를 만들, 당신은 또한 @ 문자를 가진 매개 변수 이름을 지정합니다.

+0

우리는 @ 대신 다른 문자를 사용할 수 있습니까? – Gaurav

+0

@ Gaurav : 아니요, @는 매개 변수로 사용됩니다. 대신에 무엇을 사용하고 싶습니까? 왜 그 이유가 무엇입니까? – Guffa

+0

나는 단지 알고 싶다. 그게 아무것도 아닙니다. – Gaurav