2017-12-14 11 views
2

更新:私はそれを理解したと思います。余分なアドバイスをいただければ幸いです。SQLデータベースをオブジェクトに格納しますか?

私は自分のデータベースに接続しましたが、今ではそのデータを使用できるようにしたいと考えています。 ListViewにアイテム(LargeIcon/SmallIconビューのみ)を設定し、SelectedItemsChangedを使用してアイテムをクリックしてテキストボックスで表示したり、値を更新したりできます。

(リストビューを開始上のすべてのデータ/項目が表示されます。ユーザーが項目を選択することができます。その項目はデータを保持している。このデータは、適切なコントロールに表示されます。)

だから私は店に別のクラス「のUserInfo」を作成しました私のメインフォームでは、私はゲッターを設定しましたが、私はセッターを行う方法についてはよく分かりません。

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がオブジェクトとして宣言されていることに注意してください。任意の値をオブジェクトに割り当てる(設定する)ことができます。 getterでは、オブジェクトを具体的な型にキャストする必要があります。

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が使用されます。私は私のuserDataでループしなかったので、私は0行0の代わりにint i = 0を使用し、その後、ループを使用してインデックス0を使用する場合 – Xoaks

関連する問題