Member 13849947 Ответов: 1

Как считывать данные из базы данных и хранить их в массиве C#


Я хочу сделать динамические метки, используя значения базы данных.
Я уже сделал эти ярлыки.Но я хочу,чтобы эти метки были заполнены tbl_categories в качестве подзаголовков вместо label1,2, 3.

Что я уже пробовал:

public partial class Form1 : Form
	{

		static string mycon = ConfigurationManager.ConnectionStrings["connstrng"].ConnectionString;

		public Form1()
		{
			InitializeComponent();
		}
		
		private void Form1_Load(object sender, EventArgs e)
		{
			SqlConnection conn = new SqlConnection(mycon);
			
			
			string sql = " SELECT COUNT(*) FROM tbl_categories";
			SqlCommand cmd = new SqlCommand(sql, conn);
			

			conn.Open();
			int count = (int) cmd.ExecuteScalar();
			
		

			for (int i = 0; i < count; i++)
			{
				
				Label l = addLabel(i);
				flowLayoutPanel1.Controls.Add(l);
			}
		
		

		}
		
		Label addLabel(int i)
		{
			Label l = new Label();
			l.Name = "label" + i.ToString();
			l.Text = "label" + i.ToString();
			l.ForeColor = Color.White;
			l.BackColor = Color.Blue;
			l.Font = new Font("Serif", 24, FontStyle.Bold);
			l.Width = 170;
			l.Height = 80;
			
			l.TextAlign = ContentAlignment.MiddleCenter;
			l.Margin = new Padding(5);

			return l;
		}
	}

1 Ответов

Рейтинг:
11

MadMyche

Не слишком трудная задача; вам нужно будет настроить свой addlabel метод для принятия строкового ввода, а также определения того, какой текст из SQL вы хотите заполнить

private void Form1_Load(object sender, EventArgs e) {

   using (SqlConnection conn = new SqlConnection(mycon)) {
      
      // change to whichever column contains label name
      string sql = "SELECT [LabelName] FROM tbl_categories"; 

      SqlComand cmd = new SqlComand(sql, conn);

      conn.Open();
      
//      int count = (int) cmd.ExecuteScalar();
//      for (int i = 0; i < count; i++) {
//         Label l = addLabel(i);
//         flowLayoutPanel1.Controls.Add(l);
//      }

           SqlDataReader reader = comand.ExecuteReader();
           if (reader.HasRows) {
             while (reader.Read()) {

               // TODO: Change label to accept string input
               Label l = addLabel(reader.GetString(0));

               flowLayoutPanel1.Controls.Add(l);
         }
      }
      conn.Close();
   }
}


Документация MS: Извлечение данных с помощью DataReader | Microsoft Docs[^]


Member 13849947

Спасибо!☻

MadMyche

Пожалуйста. Пожалуйста, подумайте о том, чтобы отметить это как ответ и дать ему оценку