2012-09-14 3 views
3

왜이 오류가 발생합니까?SQL에서 데이터를 표시하는 동안 오류가 발생했습니다

입력 문자열의 형식이 올바르지 않습니다.

ID에 따라 선택한 열에서 데이터를 가져 오려고합니다.

코드는 다음과 같습니다

protected void Page_Load(object sender, EventArgs e) 
{ 

    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString); 
    SqlCommand cmd = new SqlCommand("SELECT Date,Day,Time,Total FROM RSVP WHERE Id = @dummy", conn); 

    conn.Open(); 

     cmd.Parameters.Add("@dummy", SqlDbType.Int).Value = Label2.Text; 

    var dr = cmd.ExecuteReader(); 
    if (dr.HasRows == false) 
    { 
     throw new Exception(); 
    } 
    if (dr.Read()) 
    { 
     Label8.Text = dr[0].ToString(); 
     Label9.Text = dr[1].ToString(); 
     Label10.Text = dr[2].ToString(); 
     Label11.Text = dr[3].ToString(); 
    } 

오류 라인

var dr = cmd.ExecuteReader(); 

내 ID가 INT 데이터 형식과는 PK입니다에서. 감사.

+0

'Value = int.Parse (Label2.Text)'를 사용해 보셨습니까? – Reniuz

답변

1

은 간단히 다음과 같은 방법으로 AddWithValue에 있었던 파라미터의 값을 추가 AddWithValue와 함께 작업하는 동안

cmd.Parameters.AddWithValue("@dummy", Label2.Text); 

implicit conversion 있습니다.

+0

이 오류가 발생합니다. nvarchar 값 'Label'을 데이터 유형 int로 변환 할 때 변환에 실패했습니다. –

+0

즉, Label2.Text는 int로 변환 할 수없는 "Label"값을가집니다. 코드를 디버깅하십시오. Label2.Text 값을보십시오 .... –

+0

이전 페이지에는 드롭 메뉴가 있습니다 (username)을 입력하면 사용자 이름을 클릭하면 드롭 다운 B에 사용자 이름의 ID가 표시됩니다. 그런 다음 저장을 누르고 ID 세션 세션을 누르고 다음 페이지로 이동하십시오. Label2는 ID의 세션을 표시합니다. 세션 (ID)에서 위의 코드는 ID에 속한 데이터를 표시하는 데 사용됩니다. –

1

Label2.Text는 정수가 아닙니다.

정수로 변환하십시오. 이 도움이

SqlCommand cmd = new SqlCommand("SELECT [Date],[Day],[Time],Total FROM RSVP WHERE Id = @dummy", conn); 

희망 :로

cmd.Parameters.Add("@dummy", SqlDbType.Int).Value = int.Parse(Label2.Text); 
+0

오류가 여전히 동일합니다 –

+0

Label2.Text에있는 내용은 무엇입니까? – Arran

+0

ID가 이전 페이지의 세션을 보유하고 있습니다. –

0

당신의 SQL 문을을 업데이트하시기 바랍니다. 귀하의 요청에

+0

여기에 답안 부분이 누락 된 것 같습니까? –

+0

@ 테리 누락 된 것이 무엇인지 알 수 있습니까? – RL89

2

탈출 키워드 :

"SELECT [Date],[Day],[Time],Total FROM RSVP WHERE Id = @dummy" 

가 int에 데이터를 변환합니다.

cmd.Parameters.Add("@dummy", SqlDbType.Int).Value = Convert.ToInt32(Label2.Text); 
0

Label2.Text에 유효한 정수가 있습니까? TryParse을 사용하여 label2.Text에 유효한 값이 있는지 확인하십시오.

그것은 문자열이 실제로 정수를 포함하지 않을 수 있습니다 경우에 사용하는 것이 훨씬 쉽게
int number; 
bool result = Int32.TryParse(Label2.Text, out number); 

- 그것은 복구 할 쉽게 수 있도록 예외를 throw하지 않습니다.

관련 문제