2014-03-03 4 views
0
public DataTable DisplayHolidays(int empid) 
{ 
    DataTable dt = new DataTable(); 

    SqlCommand cmd = new SqlCommand("ComputeHoliday", myCon); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Parameters.Add("@EmployeeID", SqlDbType.Int).Value = empid; 
    SqlDataAdapter da = new SqlDataAdapter(cmd); 
    da.Fill(dt); 
    SqlDataReader rd = cmd.ExecuteReader(); 

    while (rd.Read()) 
    { 
     temp2 = rd[0].ToString(); 
    } 
    return dt; 
} 

이것은이 코드와 관련된 문제/오류입니다. 이 코드는 형식로드가 아닌 클래스에 있습니다. 텍스트 상자에 데이터를 표시 할 수 없습니다. temp2을 사용하여 선택한 행에 데이터를 저장했지만 아직 작동하지 않습니다.데이터베이스의 특정 데이터를 텍스트 상자에 표시하는 방법은 무엇입니까?

+1

오류가 무엇입니까 :

If(dt.Rows.Count > 0) { temp2 = dt.Rows[0].Field<string>(0); } 

당신이 DataAdapterDataTable 만 독자를 사용하지 않는 경우 : 당신은 이미 테이블을 작성하는 경우? 무슨 일 이니? * 실제 오류 또는 예외 사항을 포함하여 문제를 설명하십시오. – David

답변

0

cmd.ExecuteReader()에서 예외가 발생한다고 가정합니다.

cmd.ExecuteReader()에서 명령을 사용하려면 먼저 연결을 열어야합니다. DataAdapter.Fill은 열린 연결이 필요하지 않으므로 dataadapter는 암시 적으로 열거 나 닫을 것입니다.

MSDN

:

SELECT 문에 관련된 연결 개체가 유효 해야하지만이 열려있을 필요가 없습니다. Fill이 호출되기 전에 연결이 닫히면 이 열리고 데이터를 검색 한 다음 닫힙니다. Fill이 호출되기 전에 연결이 열려 있으면 열려 있습니다.


DataAdapter.Fill(DataTable)Command.ExecuteReader 사용합니까? 데이터를 얻는 한 가지 방법이 필요합니다.

using(SqlDataReader rd = cmd.ExecuteReader()) 
{ 
    if(rd.HasRows) 
    { 
     rd.Read(); 
     temp2 = rd.GetString(0); 
    } 
} 
관련 문제