2016-08-03 2 views
0

Я изо всех сил пытаюсь создать класс, к которому я могу получить доступ из других классов, которые будут доступны во всем приложении. Я новичок в создании классов и ценю любые логические советы. В конечном счете, я хотел бы получить доступ к значениям «checkpoint1-5» в «LUSDschoolDates» как «chk1», «chk2» и т. Д. Не уверен, что я правильно заполняю данные или лучше использую List <> ?? Подчеркнутая часть указывает область, в которой я борюсь (что в основном говорит мне, что я не могу получить доступ), и где мне нравится работать. Цель в проекте, чтобы создать заднюю админ страницу конца, где пользователь может ввести данные даты-времени, и эти значения должны быть доступны в течение всего приложения ..Создание класса 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); 

} 

с использованием списка (это не кажется, что нравится «контрольная точка возврата»;) контрольный пункт общественного класса { общественная строка контрольной точки1 {get; задавать; } общедоступная строка checkpoint2 {get; задавать; } общедоступная строка checkpoint3 {get; задавать; } открытая строка checkpoint4 {get; задавать; } общедоступная строка 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 CheckPoints();»? Кроме того, если вы ожидаете возвращения нескольких объектов из БД, вам нужно будет добавить их в какую-то коллекцию (например, List ) – LDJ

+0

Я опубликовал редактирование с использованием списка (как я изначально сделал на самом деле), но он не " t нравится «контрольная точка возврата»; – Kristofour

+0

«Контрольная точка» - это тип, а не список. Вы должны вернуть «Контрольные точки». Вы никогда не добавляете * никаких контрольных точек в список, поэтому список будет пустым. На самом деле это вопрос синтаксиса C#, а не вопрос ASP.NET или SqlDataReader. Кстати, вы, вероятно, должны использовать надлежащий корпус для имен типов и полей, чтобы избежать путаницы, например, «Контрольная точка» для типа, «контрольные точки» для списка –

ответ

0

Я написал класс для вас, который подключается к базе данных SQL и возвращает контрольные точки как List<T> где Т класс называется CheckPoint .Вы также отсутствует логика, чтобы открыть и закрыть соединение SQL, который Я включил:

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 типа Class Library и скопировать этот класс внутри библиотеки классов.

Смежные вопросы