2017-12-14 8 views
2

업데이트 : 생각해 냈습니다. 모든 추가 조언을 부탁드립니다.SQL 데이터베이스를 개체에 저장 하시겠습니까?

데이터베이스에 연결했지만 이제 해당 데이터를 사용할 수 있기를 원합니다. ListView에 항목 (LargeIcon/SmallIcon보기 만)을 채우고 SelectedItemsChanged를 사용하여 항목을 클릭하여 텍스트 상자에서보고 값을 업데이트 할 수있게하려고합니다.

(ListView에 표시 모든 데이터가/시작. 사용자의 항목은 항목을 선택할 수 있습니다. 그 항목이 데이터를 보유하고 있습니다. 그 데이터가 해당 컨트롤에 표시됩니다.)

는 그래서 내가 저장하는 다른 클래스 "사용자 정보"를 만들었습니다 내 메인 폼에서 getter를 설정했지만 setter를 수행하는 방법에 대해 확신하지 못합니다.

int row = 0; 
public UserInfo userData 
     { 

      get 
      { 
        string sqltest = data.Rows[row]["occupationId"].ToString(); 
        decimal val; 
        decimal.TryParse(sqltest, out val); 
        UserInfo u = new UserInfo(); 
        u.FirstName = data.Rows[row]["firstname"].ToString(); 
        u.LastName = data.Rows[row]["lastname"].ToString(); 
        u.UserName = data.Rows[row]["username"].ToString(); 
        u.occupId = val; 
        u.ImageIndex = 0; 

       return u;    
      } 
      //Setter 
     } 

보통은 난 그냥 세터에 string f = data.Rows[row]["firstname"].ToString();를 사용할 수 있습니까 data.Rows[row]["lastname"].ToString() = value.Lastname

할 수 없습니다 thisValue = value.Text 같은이있을 것이다?

도움을 주시면 필요에 따라 수정 해 드리겠습니다.

답변

1

이 속성은 row 값에 따라 다릅니다. 재산이 다른 것에 의존한다는 것은 좋은 습관이 아닙니다. 아마도 당신은 indexed property을 implment 수 있습니다

public UserInfo UserData[int row] { 
    get { 
     return new UserInfo { 
      FirstName = data.Rows[row]["firstname"].ToString(), 
      //Remaining fields 
     } 
    } 
    set { 
     data.Rows[row]["firstname"] = value.FirstName; 
     //Remaining fildes 
    } 
} 

를 또한 내가 occupationId 데이터베이스에서 소수로 저장하고 널 (null)을 허용 아니에요 있으리라 믿고있어. 이 널 (null)을 허용하는 경우, 당신은 다음과 같이 확인 할 수 있습니다 : 당신이 인덱싱 된 속성을 필요가없는 경우 코드는 다음과 같이 할 수 있습니다

decimal val = data.Rows[row]["occupationId"] == DBNull.Value ? 0.0m; (decimal)data.Rows[row]["occupationId"]; 

.

DataRow fields이 object로 선언되어 있습니다. 개체에 값을 할당 (설정) 할 수 있습니다. 게터에서 , 당신은 당신의 대답에 대한 구체적인 유형

int row = 0; 
public UserInfo userData 
    { 

     get 
     { 
       UserInfo u = new UserInfo(); 
       u.FirstName = data.Rows[row]["firstname"].ToString(); 
       u.LastName = data.Rows[row]["lastname"].ToString(); 
       u.UserName = data.Rows[row]["username"].ToString(); 
       u.occupId = (double)data.Rows[row]["occupationId"]; 
       u.ImageIndex = 0; 

      return u;    
     } 
     set 
     { 
       data.Rows[row]["firstname"] = value.FirstName; 
       data.Rows[row]["lastname"] = value.LastName; 
       data.Rows[row]["username"] = value.UserName; 
       data.Rows[row]["occupationId"] = value.occupId; 
     } 
    } 
+0

덕분에 개체를 캐스팅해야합니다. 나는 또한 항목을 추가하는 for 루프를 사용하는 문제가 있지만 행을 사용하고 있기 때문에 10으로 끝나기 때문에 outofindex 오류가 발생합니다. – Xoaks

+0

클래식 대신 foreach를 사용하십시오. 또는을 사용하면 양식 데이터를 처리하기위한 전체 행을 가져올 수 있습니다 .Rows.Count – mnieto

+0

항목을 추가하면 userData가 사용됩니다. 내가 int = 0 대신에 행 = 0을 사용하고 for 루프를 사용하면, 내 userData에서 루프를 만들지 않았기 때문에 인덱스 0 만 사용하게됩니다. – Xoaks