MySQL + dataGridView
Вы мне, само собой скажете, прочитав предыдущую заметку, мол, кто же в наше время работает с консолью?
А я отвечу — красноглазые админы никто, а чего вы хотели? Всё должно быть последовательно.
Но сегодня мы объединим опыт предыдущих двух заметок и вытащим информацию из базы в табличку — элемент "dataGridView".
Для этого привычным движением запускаем руку в трусы вижуал студию и создаем новый проект.
Сразу же пропишем глобальные переменные в Program.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace dgv_form
{
internal static class Program
{
/// <summary>
/// Главная точка входа для приложения.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form2());//не обращайте внимания, я сначала кинул dgv на первую формочку, а потом уже сделал вторую — с полями под ввод логина и пароля, так что программа будет стартовать со второй
}
static public string username;//да-да, это они
static public string password;//не удивляйтесь
}
}
Кинем палку элемент "dataGridView" на первую форму,

в обработчиках выберем "Activated" и перейдём к коду:
using System;
using System.Data;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace dgv_form
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
static string connect = "Server=92.126.251.58;database=pdpdb;port=3306;Uid=" + Program.username + ";pwd=" + Program.password;//параметры подключения
MySqlConnection pconn = new MySqlConnection(connect);//создаем подключение
string sqlsel = "SELECT name, place FROM list;";//сочиняем какой запрос хотим передать базе
private void Form1_Activated(object sender, EventArgs e)
{
try
{
pconn.Open();//открываем соединение
MySqlCommand command = new MySqlCommand(sqlsel, pconn);//не забываем про параметры
command.CommandText = sqlsel;
MySqlDataReader reader = command.ExecuteReader();//читаем
DataTable table = new DataTable();//делаем табличку
table.Load(reader);//заполняем табличку из ридера
dataGridView1.DataSource = table;//указываем источник инфы для dataGridView
pconn.Close();//не забываем закрыть соединение
}
catch
{
MessageBox.Show("not OK");//что-то пошло не так
}
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();//да, при закрытии этой формы — приложение закрывается тоже
}
}
}
Тут мы закончили и можем закурить перейти к созданию второй формы.
Жамкаем на имени проекта ПКМ и выбираем "Добавить-Форму":


После чего применяем все свои неимоверные дизайнерские скиллы и делаем невообразимое что-то похожее на форму авторизации. Которую, немедленно, фаршируем кодом:
using System.Windows.Forms;
namespace dgv_form
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)//нам нужна реакция только на Enter
{
Program.username = textBox1.Text;//забираем логин
Program.password = textBox2.Text;//забираем пароль
Form1 form1 = new Form1();
form1.Show();//показываем
this.Hide();//прячем
}
}
private void textBox2_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)//нам нужна реакция только на Enter
{
Program.username = textBox1.Text;//забираем логин
Program.password = textBox2.Text;//забираем пароль
Form1 form1 = new Form1();
form1.Show();//показываем
this.Hide();//прячем
}
}
}
}
Настало время проверить нашу залипуху работу:

На этот раз я сделал над собой неимоверное усилие и поставил в свойствах PasswordChar у формы значок звездочки:

После авторизации загружается наша вторая первая форма и подгружает инфу из базы:

И тут вы скажете: "Александр, ты совсем охуел обленился? Кто так выводит таблички? Выравнивания нет. До краев не наливают дотягиваются ячейки. Названия — на буржуйском."
Ладненько, давайте немножко вернемся к dGV и пропишем кой-какие свойства:

Столбцы проименуем явно:

Укажем какие данные туда ложатся кладутся:

Поставим растягивание ячеек:

И наша форма тут же преобразится:

Запускаем и проверяем:

Можно, конечно, было бы ещё выделить в редакторе сам элемент "dataGridView", в свойствах найти "Anchor" и сделать прилипание этого элемента к краям окна, чтобы он автоматически растягивался, при изменении размеров окна, но это уже совсем другая история у нас табличка чисто символическая и нам тянуть окно лень нет смысла.