2013-02-01 2 views
3

데이터베이스에서 데이터를 검색하려고 할 때마다 null이 계속됩니다. 내가 사용하고있는 코드는 다음과 같습니다 : 당신은 DataReader를에서 열 값을 읽기 전에저장 프로 시저가있는 C#을 사용하여 SQL 데이터베이스에서 데이터 검색

protected void Button2_Click(object sender, EventArgs e) 
{ 
    SqlConnection myConnection = new SqlConnection(GetConnectionString()); 
    SqlCommand cmd = new SqlCommand("spSelectCustomer", myConnection); 
    cmd.CommandType = CommandType.StoredProcedure; 
    myConnection.Open(); 

    SqlParameter custId = cmd.Parameters.Add("@CustomerId", SqlDbType.Int); 
    custId.Direction = ParameterDirection.Input; 
    custId.Value = 10; 

    SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); 

    Label1.Text = dr["FirstName"].ToString(); 
    Label2.Text = dr["LastName"].ToString(); 
    Label3.Text = dr[3].ToString(); 
    Label4.Text = dr["Email"].ToString(); 
} 
private static string GetConnectionString() 
{ 
    return ConfigurationManager.ConnectionStrings["Lab3ConnectionString"].ConnectionString; 
} 

답변

6

, 당신의 코드가 있어야한다

While (dr.Read()) 
{ 

    Label1.Text = dr["FirstName"].ToString(); 
    Label2.Text = dr["LastName"].ToString(); 
    Label3.Text = dr[3].ToString(); 
    Label4.Text = dr["Email"].ToString(); 
} 

//close DataReader 
dr.Close(); 
+0

대단히 감사합니다. 솔루션이 완벽하게 작동했습니다. – russian

+0

@ russian, 이것이 문제 해결에 도움이된다면 내 게시물을 답으로 표시하거나 확인하십시오. –

1

는 데이터 판독기에서 Read() 메소드를 호출해야합니다.

if (dr.Read()) 
{ 
    Label1.Text = dr["FirstName"].ToString(); 
    Label2.Text = dr["LastName"].ToString(); 
    Label3.Text = dr[3].ToString(); 
    Label4.Text = dr["Email"].ToString(); 
} 

또한 시도 할 수 있습니다 :

당신이 데이터에 액세스 할 수 있습니다 Read를 호출 할 필요가
SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.SingleRow); 
2

당신은 당신의 독자에 Read()에 대한 호출을 누락되었습니다. 또한 IDisposable 개체를 using 문에 다음과 같이 포장하는 것이 좋습니다.

또한 SqlDataReader에서 값을 검색 할 때 열 이름과 서수 위치의 이상한 조합이 사용 된 것 같습니다.

protected void Button2_Click(object sender, EventArgs e) 
{ 
    using (SqlConnection myConnection = new SqlConnection(GetConnectionString())) 
    { 
     using (SqlCommand cmd = new SqlCommand("spSelectCustomer", myConnection)) 
     { 
      cmd.CommandType = CommandType.StoredProcedure; 
      myConnection.Open(); 

      SqlParameter custId = cmd.Parameters.AddWithValue("@CustomerId", 10); 

      using (SqlDataReader dr = cmd.ExecuteReader()) 
      { 
       if (dr.Read()) 
       { 
        Label1.Text = dr["FirstName"].ToString(); 
        Label2.Text = dr["LastName"].ToString(); 
        Label3.Text = dr[3].ToString(); 
        Label4.Text = dr["Email"].ToString(); 
       } 
      } 
     } 
    } 
} 
관련 문제