2016-08-03 5 views
0

私は、アプリケーション全体からアクセス可能な他のクラスからアクセスできるクラスを作成するのに苦労しています。私はクラスを作成することに新しい、任意の論理的なヒントを感謝します。最終的には、 "LUSDschoolDates"の "checkpoint1-5"の値に "chk1"、 "chk2"などのようにアクセスしたいと思います。リストを使用するには、データを正しく挿入するかどうかはわかりません。下線部分は、私が苦労している領域を示しています(基本的に私はアクセスができないと言います)。ユーザーはdatetimeデータを挿入することができ、これらの値は、アプリケーション全体を通してアクセスできるようにする必要がある場所のプロジェクトにおける目標は、(好きなように見えるdoesntの..sqldatareaderクラスの作成

public class checkpoint 
{ 
    public string checkpoint1 { get; set; } 
    public string checkpoint2 { get; set; } 
    public string checkpoint3 { get; set; } 
    public string checkpoint4 { get; set; } 
    public string checkpoint5 { get; set; } 
} 

public class myCheckpoints 
{ 
    public static string Checkpoints() 

    { 

     using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["lusdMembership"].ConnectionString)) 
     { 
      SqlCommand cmd = new SqlCommand("SELECT chk1, chk2, chk3, chk4, chk5 FROM checkpoints", connection); 
      SqlDataReader reader = cmd.ExecuteReader(); 
      while (reader.Read()) 
      { 
       checkpoint c = new checkpoint(); 
       c.checkpoint1 = reader["chk1"].ToString(); 
       c.checkpoint2 = reader["chk2"].ToString(); 
       c.checkpoint3 = reader["chk3"].ToString(); 
       c.checkpoint4 = reader["chk4"].ToString(); 
       c.checkpoint5 = reader["chk5"].ToString(); 
      } 
      return Checkpoints(); 
     } 

    } 
} 


public class LUSDschoolDates 
{ 

    public static DateTime chk1 = new DateTime(checkpoint.checkpoint1); 

} 

リストを使用してバックエンドの管理ページを作成することです"return checkpoint;") パブリッククラスチェックポイント { public string checkpoint1 {get;セット; } 公開ストリングcheckpoint2 {get;セット; } 公開ストリングcheckpoint3 {get;セット; } 公開ストリングcheckpoint4 {get;セット; } パブリックstring checkpoint5 {get;セット; } }

public class myCheckpoints 
{ 
    public List<checkpoint> GetDate(string chDate) 

    { 

     List<checkpoint> Checkpoints = new List<checkpoint>(); 
     using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["lusdMembership"].ConnectionString)) 
     { 
      SqlCommand cmd = new SqlCommand("SELECT chk1, chk2, chk3, chk4, chk5 FROM checkpoints", connection); 
      SqlDataReader reader = cmd.ExecuteReader(); 
      while (reader.Read()) 
      { 
       checkpoint c = new checkpoint(); 
       c.checkpoint1 = reader["chk1"].ToString(); 
       c.checkpoint2 = reader["chk2"].ToString(); 
       c.checkpoint3 = reader["chk3"].ToString(); 
       c.checkpoint4 = reader["chk4"].ToString(); 
       c.checkpoint5 = reader["chk5"].ToString(); 

      } 
      return checkpoint; 
     } 

    } 
+0

新しいチェックポイントのインスタンスを作成しますが、返さないでください。 "return checkpoint;"とするべきではありません。 "CheckPoints();を返すのではなく"?また、複数のオブジェクトがDBから返されることを期待している場合、それらをコレクションのいくつかの並べ替えに追加する必要があります(例えば、リスト) – LDJ

+0

リストを使用して編集を投稿しました。 "return checkpoint;"のようなものはありませんか? – Kristofour

+0

'checkpoint'はタイプであり、リストではありません。 'Checkpoints'を返すべきです。リストにチェックポイントを追加することは決してないので、リストは空になります。これは実際にはC#の構文に関する質問であり、ASP.NETやSqlDataReaderに関する質問ではありません。あなたはおそらくタイプとフィールド名に適切なケーシングを使用して混乱を避けるべきでしょう。例えば、タイプの 'Checkpoint'、リストの' checkpoints' –

答えて

0

私はSQLデータベースに接続するあなたのためのクラスを書き、TはCheckPoint。あなたというクラスもいるSQL接続を開閉するためのロジックを欠落していたさList<T>としてチェックポイントを返します。私が含まれている:

public class CheckPoint 
{ 
    public string CheckPoint1 { get; set; } 
    public string CheckPoint2 { get; set; } 
    public string CheckPoint3 { get; set; } 
    public string CheckPoint4 { get; set; } 
    public string CheckPoint5 { get; set; } 
} 

public class MyCheckpoints 
{ 
    public List<CheckPoint> GetCheckPoins() 
    { 
     List<CheckPoint> checkpoints = new List<CheckPoint>(); 

     string connectionString = ConfigurationManager.ConnectionStrings["lusdMembership"].ConnectionString; 
     using (SqlConnection connection = new SqlConnection(connectionString)) 
     { 
      SqlCommand cmd = new SqlCommand("SELECT chk1, chk2, chk3, chk4, chk5 FROM checkpoints", connection); 
      connection.Open(); 
      using (SqlDataReader reader = cmd.ExecuteReader()) 
      { 
       while (reader.Read()) 
       { 
        CheckPoint c = new CheckPoint 
        { 
         CheckPoint1 = reader["chk1"].ToString(), 
         CheckPoint2 = reader["chk2"].ToString(), 
         CheckPoint3 = reader["chk3"].ToString(), 
         CheckPoint4 = reader["chk4"].ToString(), 
         CheckPoint5 = reader["chk5"].ToString(), 
        }; 
        checkpoints.Add(c); 
       } 
       connection.Close(); 
      } 
     } 
     return checkpoints; 
    } 
} 

そして、ここでは、あなたがASP.NETからそれを呼び出すことができます方法は次のとおりです。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!Page.IsPostBack) 
    { 
     System.Diagnostics.Debugger.Break(); 

     MyCheckpoints myCheckpoints = new MyCheckpoints(); 
     List<CheckPoint> checkPoints = myCheckpoints.GetCheckPoins(); 
     int count = checkPoints.Count; 
    } 
} 

異なるプロジェクト間でMyCheckpointsを再利用できるようにするには、クラスライブラリのVisual Studioで新しいプロジェクトを作成し、このクラスをクラスライブラリ内にコピーする必要があります。