I 시스템의 비슷한 종류를 사용하여, 대신의 개인 객체로 SqlDataReader 개체를 통과, 내가 대신 해요 개체에 SqlConnection을 전달하고 필요한 작업을 수행하는 개인용 FillDetailsFromDb()
메서드가 있어야합니다.
그래서 SqlDataReader를 전달하는 대신 매개 변수없는 생성자와 SqlConnection을 매개 변수로 사용하는 생성자를 사용합니다.
개체를 만들면 매개 변수 (내 경우에는 Guid)를 개체에 전달하고 개인 메서드는 보낸 SqlCommand와 함께 생성 된 SqlConnection을 사용합니다. 공개 방법에.
private void FillDetailsFromDb(Guid p)
{
SqlCommand com = new SqlCommand();
com.Connection = conn;
com.CommandText = "spSelectProspectUsingLinkParameter";
com.CommandType = CommandType.StoredProcedure;
com.Parameters.AddWithValue("@linkparam", p);
conn.Open();
SqlDataReader rdr = com.ExecuteReader();
...
etc
}
이 개체가 여전히 분리 된 개체로 존재할 수 있으며 다른 장소에서 사용할 수있는 수단과 SqlDataReader 개체는 내가 아주 많이 좋아하지 않는 것으로 나타났습니다되는 건네 줄 수가 없습니다.
덧붙여 말하자면,이 문제를 직접 조사하는 동안 데이터베이스의 데이터 유형에서 .Net 데이터 유형으로 데이터를 변환 할 때 이상한 null 값을 발생시킬 가능성이 있음을 발견했습니다. 다음 코드와 같은 것을 사용하여 데이터베이스의 열 이름을 활용할뿐만 아니라 DBNull 데이터 형식을 피할 수있었습니다.
if (!rdr.IsDBNull(rdr.GetOrdinal("firstname")))
{
Firstname = rdr.GetString(rdr.GetOrdinal("firstname"));
}
어디에서 문제가 발생합니까? 이미해야할 일을 결정했습니다. – Reniuz