2013-12-13 3 views
1

У меня есть запрос, который выбирает строки в соответствии с определенными определенными критериями. Как только это произойдет, у меня есть читатель, который получает значения для использования. Моя проблема заключается в том, как я могу получить переменное количество строк, которые читатель вернул моему ASP.Net за кодовой страницей? Также сможете получать отдельные строки, а не только первую строку. Я не уверен, нужно ли устанавливать счетчик или честно, что делать. Как я могу получить эти переменные количества строк в соответствующие метки? Если вы хотите увидеть какой-либо код, дайте мне знать.Вставка нескольких строк в таблицу html ASP.Net

DBHelper класс, где:

private DBHelper() { } 

    public static SqlConnection getConnection() 
    { 
     return new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString); 
    } 

    public static SqlConnection getFRESHConnection() 
    { 
     return new SqlConnection(ConfigurationManager.ConnectionStrings["FRESHConnection"].ConnectionString); 
    } 

    public static SqlDataReader executeQuery(SqlConnection dbConn, string sqlString, SqlParameter[] parameters) 
    { 
     SqlCommand cmd = null; 
     SqlDataReader reader = null; 
     try 
     { 
      if (dbConn.State == ConnectionState.Closed) 
       dbConn.Open(); 
      cmd = dbConn.CreateCommand(); 
      cmd.CommandText = sqlString; 
      if (parameters != null) 
      { 
       cmd.Parameters.AddRange(parameters); 
      } 
      reader = cmd.ExecuteReader(); 
      cmd.Dispose(); 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
     return reader; 
    } 

DATACLASS:

public class LineAData 
{ 
    public int CaseNum6; 
    public int CaseNum9; 
    public int Group; 
    public bool Completed; 
    public int WorkID; 


    public void load(int Group1, int Group2) 
    { 
     StringBuilder sqlString = new StringBuilder(); 
     sqlString.Append("SELECT WorkID, CaseNum6, CaseNum9, Group, Completed "); 
     sqlString.Append("FROM WorkOrder "); 
     sqlString.Append("WHERE Group = @Group1 OR Group = @Group2 "); 
     sqlString.Append("AND Completed = '0' "); 

     SqlDataReader reader = null; 
     SqlConnection dbConn = DBHelper.getConnection(); 

     SqlParameter[] parameters = new SqlParameter[] { new SqlParameter("@Group1", Group1), 
                 new SqlParameter("@Group2", Group2) }; 

     try 
     { 
      reader = DBHelper.executeQuery(dbConn, sqlString.ToString(), parameters); 
      if (reader != null) 
      { 
       if (reader.Read()) 
       { 
        WorkID = (int)(reader["WorkID"]); 
        CaseNum6 = (int)(reader["CaseNum6"]); 
        CaseNum9 = (int)(reader["CaseNum9"]); 
        Group = (int)(reader["Group"]); 
        Completed = (bool)reader["Completed"]; 
       } 
       else 
        throw new Exception("No record returned"); 
       reader.Close(); 
       reader.Dispose(); 
       dbConn.Close(); 
       dbConn.Dispose(); 
      } 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
     finally 
     { 
      if (dbConn != null) 
      { 
       try { dbConn.Close(); dbConn.Dispose(); } 
       catch { } 
      } 
      if (reader != null) 
      { 
       try { reader.Close(); reader.Dispose(); } 
       catch { } 
      } 
     } 
    } 
+0

да его лучше предоставить код! –

+1

Мы программисты, мы ВСЕГДА хотим видеть код. :) – paqogomez

+0

Вы пробовали элемент управления Datagrid? http://msdn.microsoft.com/ru-ru/library/system.web.ui.webcontrols.datagrid(v=vs.110).aspx – Amitd

ответ

0

Создать класс, который хранит следующие поля:

public class Class1 
{ 
    public int WorkId { get; set; } 
    public int CaseNum6 { get; set; } 
    public int CaseNum9 { get; set; } 
    public int Group { get; set; } 
    public bool Completed { get; set; } 
} 

Тогда вместо того, чтобы использовать if (reader.Read()) Использования в то время как (читатель .read())

List<Class1> myList = new List<Class1>(); 
while(reader.read()) 
{ 
    // assign the reader values to your class 
    myClass obj = new myClass(); 
    obj.WorkId= reader["WorkId"] 
    obj.CaseNum6 = reader["CaseNum6"] 
    // do for all fields 

    // add to the list 
    myList.Add(obj) 
} 

Теперь у вас есть переменное количество результатов, хранящихся в «myList»!

Конечно, не забудьте закрыть читателя или обернуть его в используемом заявлении.

+0

Зачем делать while (reader.read()) дважды? –

+0

О, текст был скопирован в неправильном месте и вводит в заблуждение. звоните только один раз. – Induster

+0

Он вернул нулевой –

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