2010-04-28 9 views
0

SQL Server 2005에서 C# Winforms 응용 프로그램의 매개 변수화 된 저장 프로 시저를 호출하려고합니다. 내가 TextBoxeslike에서 매개 변수를 추가는 그래서 (그 중 88가) :TextBox의 ADO.NET 매개 변수

cmd.Parameters.Add("@CustomerName", SqlDbType.VarChar, 100).Value = CustomerName.Text; 

내가 얻을 다음과 같은 예외 :

"System.InvalidCastException: Failed to convert parameter value 
from a TextBox to a String. ---> System.InvalidCastException: 
Object must implement IConvertible." 

내가 쿼리 호출 할 때 오류를 던져 줄입니다 :

cmd.ExecuteNonQuery(); 

어쨌든 무의미한 TextBoxes에서 .ToString() 메서드를 사용하여 동일한 오류가 발생했습니다. 매개 변수를 잘못 전달하고 있습니까?

+0

무엇이'CustomerName.Name'입니까? 이 문자열 또는'TextBox' 또는 무엇입니까? 당신은'string'을 원합니다 ... –

+0

그것은 TextBox입니다. 나는 그것을 명확하게하기 위해 질문을 업데이트 할 것이다. –

답변

6

매개 변수 값 중 하나를 할당 할 때 Text 속성을 지정하는 것을 잊었을 가능성이 큽니다. 대신 예를 들어

:

CustomerName.Text 

당신은했을 수 있습니다

CustomerName 

이 그들 중 88이 있다면 놓치지 쉬운 일이 될 것이다. 이 같은

+0

완벽. 그것이 내가 한 일입니다. 이 문제는 다른 사람들이 문제를 해결할 때 유용 할 수 있다고 생각하기 때문에 삭제하지 않을 것입니다. 그러나 누군가 삭제를 위해 그것을 표시하고 싶다면 그 점도 볼 수 있습니다. –

0

시도 뭔가 :

SqlParameter sqlParam= new SqlParameter(); 
sqlParam.ParameterName = "@customerName"; 
sqlParam.Direction = ParameterDirection.Input; 
sqlParam.SqlDbType = SqlDbType.VarChar; 
sqlParam.Size = 100; 
sqlParam.Value = customername.Text; 
cmd.Parameters.Add(sqlParam); 
+0

코드를 포맷하려면, 편집기에서 코드를 선택하고 Control-K를 누르십시오. –

1

난 당신이 어딘가에는 .text를 놓친 의심,하지만 당신은 그 이상한 것 같다, 그래서 당신은 모든 매개 변수 값에 ToString을했다 말한다. 어쨌든 다음 코드를 사용하여 매개 변수 이름과 값의 형식 이름을 덤프 할 수 있습니다. 이렇게하면 문제가있는 매개 변수를 쉽게 찾을 수 있습니다.

foreach (SqlParameter param in cmd.Parameters) 
{ 
    System.Diagnostics.Debug.WriteLine(string.Format("{0}:{1}", param.ParameterName, param.Value == null ? "NULL" : param.Value.GetType().Name)); 
} 

당신은이 경우 CustomerSurname이 텍스트 상자가 아닌 예를 들어 문자열이있는 매개 변수, 디버그 창에 다음과 같은 무언가를 얻어야한다.

@CustomerName:String 
@CustomerSurname:TextBox 
... 
+0

ToString 메서드를 추가 할 때 간단한 찾기 및 바꾸기를 사용하여 ".Text;"를 변경했습니다. ".Text.ToString();" 그래서, 물론, 문제의 라인을 발견하지 못했습니다. 그러나 훌륭한 아이디어를 가져 주셔서 감사합니다! 나는 미래의 오류 검사를 위해 이것을 명심해야 할 것입니다. –

관련 문제