Как загрузить данные из SQL-запроса в datagridview?
Я объявил 2 строковые переменные:
string fname; string lname;
Когда я писал MySQL запрос в базе данных phpMyAdmin:
SELECT workers.FNAME, workers.LNAME FROM project1.workers INNER JOIN project1.order_status ON workers.ID_WORKER = order_status.ID_WORKER INNER JOIN project1.orders ON orders.ID_ORDER = order_status.ID_ORDER WHERE orders.ORDER_NUMBER = 'TEST' GROUP BY workers.FNAME, workers.LNAME
У меня есть 2 рабочие:
-"Адам Гакс" и
-"Андрей Червяк"
Затем я хотел бы сохранить объект из этого запроса и загрузить эти данные в datagridview:
SQLdata.connection.Open(); using (var command = new MySqlCommand(query1, SQLdata.connection)) { using (var reader1 = command.ExecuteReader()) { while (reader1.Read()) { fname = Convert.ToString(reader1[0]); lname = Convert.ToString(reader1[1]); } } }
Я взял точки останова в строках кода в цикле while и читаю все FNAME и LNAME. Затем он загружает все данные правильно. Затем я хочу загрузить их в datagridview.
SQLdata.connection.Close(); sick_leaves x = new sick_leaves(); x.FNAME = fname; x.LNAME = lname; return x;
и свяжите их вот так:
sick_leaves a = calculate_sickness_leaves(txt_NrOrder.Text); cu = calculate_sickness_leaves(txt_NrOrder.Text); var source = new BindingSource(); source.DataSource = cu; dataGridView2.DataSource = source;
затем с помощью данных из файла Orders.cs:
public class sick_leaves { public string FNAME { get; set; } public string LNAME { get; set; } }
После компиляции его в datagridview я загрузил только 1 работника: "Andrew Worm". Это должны быть те 2 работника, чтобы он не загружал все данные из sql-запроса.
Теперь: как я могу загрузить все данные из sql-запроса в datagridview? Есть идеи?
Внимание! Мне нужна помощь в настольном приложении
Что я уже пробовал:
GenerateOrder.в CS:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using MySql.Data.MySqlClient; using System.Windows.Forms.DataVisualization.Charting; using iTextSharp.text; using iTextSharp.text.pdf; using System.IO; using System.Diagnostics; namespace ControlDataBase { public partial class GenerateChartsOfOrders : Form { string fname; string lname; sick_leaves cu = new sick_leaves(); public GenerateChartsOfOrders() { InitializeComponent(); } public void loaddata2() { string connect = "datasource=localhost;port=3306;username=root;password="; MySqlConnection connection = new MySqlConnection(connect); connection.Open(); sick_leaves a = calculate_sickness_leaves(txt_NrOrder.Text); cu = calculate_sickness_leaves(txt_NrOrder.Text); var source = new BindingSource(); source.DataSource = cu; dataGridView2.DataSource = source; connection.Close(); } private sick_leaves calculate_sickness_leaves(string NrOrder) { string query1 = string.Format("SELECT workers.FNAME, workers.LNAME FROM project1.workers INNER JOIN project1.order_status " + "ON workers.ID_WORKER = order_status.ID_WORKER INNER JOIN project1.orders ON orders.ID_ORDER = order_status.ID_ORDER " + "WHERE orders.ORDER_NUMBER = '"+ NrOrder +"' GROUP BY workers.FNAME, workers.LNAME"); SQLdata.connection.Open(); using (var command = new MySqlCommand(query1, SQLdata.connection)) { using (var reader1 = command.ExecuteReader()) { while (reader1.Read()) { fname = Convert.ToString(reader1[0]); lname = Convert.ToString(reader1[1]); } } } SQLdata.connection.Close(); sick_leaves x = new sick_leaves(); x.FNAME = fname; x.LNAME = lname; return x; } } }
Заказы.в CS
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ControlDataBase { public class sick_leaves { public string FNAME { get; set; } public string LNAME { get; set; } } }
Методу sqldata.в CS
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using MySql; using MySql.Data.MySqlClient; namespace ControlDataBase { class SQLdata { public static MySqlConnection connection = new MySqlConnection ("datasource=localhost;port=3306;username=root;password="); } }