2012-09-20 3 views
2

여기 내 코드가 있지만 -1 값을 반환합니다. Name 필드에는 유니 코드 값이 들어 있습니다.선택 명령의 매개 변수로 유니 코드 값을 전달하는 방법

using (SqlConnection conn = new SqlConnection(connStr)) 
    {  
     string str = string.Format("select SrNo from Jat where [email protected]"); 
     SqlCommand dCmd = new SqlCommand(str, conn); 
     try 
     {    
      dCmd.Parameters.AddWithValue("@Name","N" +Name); 
      int i= dCmd.ExecuteNonQuery(); 
      return i; 
     } 
     catch 
     { 
      throw; 
     } 
    } 
+0

이를 참조하십시오 ** HTTP : //stackoverflow.com/questions/7548371/unicode-sql-query-w-parameter-instead -n- 접두사 ** –

답변

2

이이에서

dCmd.Parameters.AddWithValue("@Name","N" +Name); 

제거 "N"를 적어 할 필요는 없지만 당신이 할 수있는 것보다 NVARCHAR 유형 매개 변수를 만들려면 NVARCHAR 매개 변수

dCmd.Parameters.AddWithValue("@Name", Name); 

을 만들 나던 이것을하십시오

dCmd.Parameters.Add(new SqlParameter("@Name", SqlDbType.NVarChar)).Value = Name; 

이 당신이 NVARCHAR 매개 변수로이 매개 변수를 추가 할 수있는 것보다 NVARCHAR 매개 변수를 생성합니다

코드

또 하나의 변화는 ExecuteScalar는 방법보다는 ExecuteNonQuey의 ExecuteScalar

int i= Convert.ToInt32(dCmd.ExecuteScalar()); 

메이크업 사용의 활용입니다 .. .. 비 Sclar 메서드 반환 값 업데이트 및 삽입 쿼리를 사용할 때 영향을받는 SrNo 및 NonQuery 반환하는 행

+0

@Pranay에 감사드립니다. N을 제거하여 사용했지만 -1을 반환합니다. – Somnath

+0

@Somnath - 전달 된 이름과 데이터베이스를 비교합니다. 이 쿼리를 사용하려면 _identical_가되어야합니다. – Oded

+0

@Somnath - ExecuteNonQuey가 아닌 ExecuteScalar 메소드를 사용합니다 .... Scrar가 아닌 메소드 반환 값 SrNo 및 NonQuery가 update 및 insert 쿼리를 사용할 때 영향을받는 행을 반환하기 때문에 –

1

먼저 N "은 유니 코드 문자열 리터럴 용 TSQL에만 필요합니다. 당신이 선택한 SrNr를 돌려 사용하려는 경우

둘째, ExecuteScalar()

+0

감사합니다 @devio ExecuteScalar()를 사용하여 작동합니다. – Somnath

관련 문제