2013-11-18 2 views
0

Интересно, как я мог писать свои строки, а не только первый.C# SqlDataReader пишите несколько строк

Вот мой C#

string SessionID = Session["ID"].ToString(); 

using (SqlConnection connection = new SqlConnection(@"Data Source=JENSKVIST\SQLEXPRESS;Initial Catalog=BlogNetwork;Integrated Security=True")) 
{ 
    connection.Open(); 

    string query = "SELECT * FROM Entries ORDER BY Entry_ID DESC"; 
    using (SqlCommand command = new SqlCommand(query, connection)) 
    { 
     using (SqlDataReader reader = command.ExecuteReader()) 
     { 
      while (reader.Read()) 
      { 
       string DataHeadline = reader["Entry_Headline"].ToString(); 
       string DataUserID = reader["Entry_UserID"].ToString(); 
       string DataMedia = reader["Entry_Media"].ToString(); 
       string DataContent = reader["Entry_Content"].ToString(); 
       string DataID = reader["Entry_ID"].ToString(); 

       User_ID.Value = DataID; 
       Entry_Headline.Text = DataHeadline; 
       Entry_Media.ImageUrl = DataMedia; 
       Entry_Content.Text = DataContent; 
      } 
     } 

    } 

    string UserQuery = "SELECT * FROM Users WHERE [email protected]"; 
    using (SqlCommand UserCommand = new SqlCommand(UserQuery, connection)) 
    { 

     UserCommand.Parameters.AddWithValue("@DataID", User_ID.Value); 

     using (SqlDataReader UserReader = UserCommand.ExecuteReader()) 
     { 
      while (UserReader.Read()) 
      { 
       string DataAvatar = UserReader["User_Avatar"].ToString(); 
       string DataName = UserReader["User_Firstname"].ToString() + " " + UserReader["User_Lastname"].ToString(); 

       Entry_Avatar.ImageUrl = DataAvatar; 
       Entry_Name.Text = DataName; 

      } 
     } 
    } 
} 

и вот мои ASP элементы

<asp:HiddenField runat="server" ID="User_ID" /> 

<asp:Image runat="server" ID="Entry_Avatar" /> 

<asp:Label runat="server" ID="Entry_Name" /> posted entry <asp:Label runat="server" ID="Entry_Headline" /> 

<asp:Image runat="server" ID="Entry_Media" Width="400" /> 

<asp:Label runat="server" ID="Entry_Content" />... <asp:HyperLink runat="server" ID="Entry_Link">Read more</asp:HyperLink> 

Я не знаю, как это сделать, я искал в Интернете, но решение не найдено. Если вы, ребята, хотите посмотреть мой sql-стол, не стесняйтесь спрашивать. Надеюсь, вы, ребята, поможете мне понять это. Спасибо.

+3

Вы читаете все свои данные, но вы назначаете его снова и снова тем же элементам управления. Это похоже на то, что вы хотите отобразить целую таблицу, используя только одну строку - это можно сделать, если вы действительно этого захотите, но решение не будет красивым, и это не будет иметь особого смысла в первую очередь. –

+2

Я думаю, что вы ищете ретранслятор, [здесь] (http://www.codeproject.com/Articles/8659/Mastering-ASP-NET-DataBinding), чтобы начать работу. – JMK

+0

@Kvist Как ** S_F ** уже сказал, что вы назначаете новые значения одной и той же переменной, поэтому сначала дайте нам знать, что вы хотите делать, я имею в виду, какой результат вам нужен в какой форме? –

ответ

0

Ниже приведен пример приложения, которое я создал.

entitySet - это коллекция.

  using (_connection) 
      { 
       reader = command.ExecuteReader(); 

       fieldCount = reader.FieldCount; 
       properties = new SortedList<string, PropertyInfo>(); 

       foreach (PropertyInfo pi in typeof(T).GetProperties()) 
       { 
        properties.Add(pi.Name.ToUpper(), pi); 
       } 

       while (reader.Read()) 
       { 
        T item = Activator.CreateInstance<T>(); 

        for (int i = 0; i < fieldCount; i++) 
        { 
         if (reader[i] != DBNull.Value) 
          properties[reader.GetName(i).ToUpper()].SetValue(item, reader[i], null); 
        } 

        entitySet.Add(item); 
       } 
      } 
      reader.Close(); 
Смежные вопросы