Код:
namespace WindowsFormsApp1
{
public partial class Form : System.Windows.Forms.Form
{
SqlConnection sqlConnection; // для конекта базы данных (объект)
// todo: в отдельный класс: sqlConnection, загрузка и сохранение
public Form()
{
InitializeComponent();
}
private async void Form1_Load(object sender, EventArgs e)
{
//string connectionStringBase = @"Data Source=(LocalDB)\MSSQLLocalDB;Integrated Security=True;AttachDbFilename="; // расположение базы данных
string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\Семён\Desktop\Прога\WindowsFormsApp1\WindowsFormsApp1\Database1.mdf;Integrated Security=True"; // расположение базы данных
sqlConnection = new SqlConnection(connectionString); // экз. класса с пареметром
await sqlConnection.OpenAsync(); // сделать соединение открытым (ансинхронным) чтобы не тормозить польз. интерфейс
SqlDataReader sqlReader = null; // для получения сод. базы данных
SqlCommand command = new SqlCommand("SELECT * FROM [Products]", sqlConnection); // для запроса (выбераем все из таблицы)
try //
{
sqlReader = await command.ExecuteReaderAsync(); // для счит. таблицы
while (await sqlReader.ReadAsync()) // пройтись по всей счит. информации
{
listBox1.Items.Add(Convert.ToString(sqlReader["Id"]) + " | " + Convert.ToString(sqlReader["Name"]) + " | " + Convert.ToString(sqlReader["Price"]) + " | " + Convert.ToString(sqlReader["Cols"])); // заполнение
}
}
catch (Exception ex) //
{
MessageBox.Show(ex.Message.ToString(), ex.Source.ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error); // вывод
}
finally //
{
if (sqlReader != null) //
sqlReader.Close(); // закрыть sqlReader
}
}
private void выходToolStripMenuItem_Click_1(object sender, EventArgs e)
{
if (sqlConnection != null && sqlConnection.State != ConnectionState.Closed) // чтобы не было утечки данных закрываем это
sqlConnection.Close();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (sqlConnection != null && sqlConnection.State != ConnectionState.Closed) // оброботчик событий, чтобы не было утечки данных закрываем это
sqlConnection.Close(); //
}
private async void button1_Click_1(object sender, EventArgs e)
{
if (label7.Visible) // если все верно
label7.Visible = false; //
if (!string.IsNullOrEmpty(textBox1.Text) && !string.IsNullOrWhiteSpace(textBox1.Text) && // если все верно
!string.IsNullOrEmpty(textBox2.Text) && !string.IsNullOrWhiteSpace(textBox2.Text) &&
!string.IsNullOrEmpty(textBox7.Text) && !string.IsNullOrWhiteSpace(textBox7.Text))
{
SqlCommand command = new SqlCommand("INSERT INTO [Products] (Name, Price, Cols)VALUES(@Name, @Price, @Cols)", sqlConnection); // команды для добавления информации
command.Parameters.AddWithValue("Name", textBox1.Text); // чтобы знала что это (с ключом)
command.Parameters.AddWithValue("Price", textBox2.Text); //
command.Parameters.AddWithValue("Cols", textBox7.Text); //
await command.ExecuteNonQueryAsync(); // выполнить команды
}
else
{
label7.Visible = true; //
label7.Text = "Поля 'Имя' и 'Цена' и 'Количество' должны быть заполнены!"; // ошибка
}
}
private async void обновитьToolStripMenuItem_Click_1(object sender, EventArgs e)
{
listBox1.Items.Clear(); // для дочистки
SqlDataReader sqlReader = null; // для получения сод. базы данных
SqlCommand command = new SqlCommand("SELECT * FROM [Products]", sqlConnection); // для запроса (выбераем все из таблицы)
try //
{
sqlReader = await command.ExecuteReaderAsync(); // для счит. таблицы
while (await sqlReader.ReadAsync()) // пройтись по всей счит. информации
{
listBox1.Items.Add(Convert.ToString(sqlReader["Id"]) + " | " + Convert.ToString(sqlReader["Name"]) + " | " + Convert.ToString(sqlReader["Price"]) + " | " + Convert.ToString(sqlReader["Cols"])); // заполнение
}
}
catch (Exception ex) //
{
MessageBox.Show(ex.Message.ToString(), ex.Source.ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error); // вывод
}
finally //
{
if (sqlReader != null) //
sqlReader.Close(); // закрыть sqlReader
}
}
private async void button2_Click_1(object sender, EventArgs e) //
{
if (label8.Visible) // если все верно
label8.Visible = false; //
if (!string.IsNullOrEmpty(textBox3.Text) && !string.IsNullOrWhiteSpace(textBox3.Text) && // если все верно
!string.IsNullOrEmpty(textBox4.Text) && !string.IsNullOrWhiteSpace(textBox4.Text) &&
!string.IsNullOrEmpty(textBox5.Text) && !string.IsNullOrWhiteSpace(textBox5.Text) &&
!string.IsNullOrEmpty(textBox8.Text) && !string.IsNullOrWhiteSpace(textBox8.Text))
{
SqlCommand command = new SqlCommand("UPDATE [Products] SET [Name]=@Name, [Price]=@Price, [Cols]=@Cols WHERE [Id]=@Id", sqlConnection); // для обновления информации
command.Parameters.AddWithValue("Id", textBox5.Text); // чтобы знала что это (с ключом)
command.Parameters.AddWithValue("Name", textBox3.Text); //
command.Parameters.AddWithValue("Price", textBox4.Text); //
command.Parameters.AddWithValue("Cols", textBox8.Text); //
await command.ExecuteNonQueryAsync(); // выполнить команды
}
else if (!string.IsNullOrEmpty(textBox4.Text) && !string.IsNullOrWhiteSpace(textBox4.Text)) // проверяем что что то должно быть
{
label8.Visible = true; //
label8.Text = "Id должнен быть заполнен!"; //
}
else
{
label8.Visible = true; //
label8.Text = "Поля 'Id', 'Имя' и 'Цена' и 'Количество' должны быть заполнены!"; // ошибка
}
}
private async void button3_Click(object sender, EventArgs e)
{
if (label9.Visible) // если все верно
label9.Visible = false; //
if (!string.IsNullOrEmpty(textBox6.Text) && !string.IsNullOrWhiteSpace(textBox6.Text)) // проверяем что что то должно быть
{
SqlCommand command = new SqlCommand("DELETE FROM [Products] WHERE [Id]=@Id", sqlConnection); // для удаление информации
command.Parameters.AddWithValue("Id", textBox6.Text); // // чтобы знала что это (с ключом)
await command.ExecuteNonQueryAsync(); // // выполнить команды
}
else
{
label9.Visible = true; //
label9.Text = "Id должнен быть заполнен!"; // ошибка
}
}
private void справкаToolStripMenuItem_Click(object sender, EventArgs e)
{
}
private void label1_Click(object sender, EventArgs e)
{
}
}
}