Add project files.
This commit is contained in:
58
Activity/formActivity.xaml
Normal file
58
Activity/formActivity.xaml
Normal file
@@ -0,0 +1,58 @@
|
||||
<Window x:Class="SportsTrainingApp.formActivity"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:SportsTrainingApp"
|
||||
mc:Ignorable="d"
|
||||
Title="Система учета спортивных тренировок" Height="450" Width="800" Icon="/free-icon-fitness-4729328.png" WindowStartupLocation="CenterScreen">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="0.3*"></RowDefinition>
|
||||
<RowDefinition Height="0.5*"></RowDefinition>
|
||||
<RowDefinition Height="0.5*"></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock x:Name="tbCurUser" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="6"
|
||||
Text="Текущий пользователь: " VerticalAlignment="Center" HorizontalAlignment="Center"/>
|
||||
<DataGrid Grid.Column="0" Grid.Row="3" x:Name="gridActivity" AutoGenerateColumns="False"
|
||||
ColumnWidth="*" Grid.ColumnSpan="6" Grid.RowSpan="3" Margin="10" IsReadOnly="True">
|
||||
<DataGrid.Resources>
|
||||
<Style TargetType="TextBlock" x:Key="WrapText">
|
||||
<Setter Property="TextBlock.TextWrapping" Value="Wrap" />
|
||||
</Style>
|
||||
<Style TargetType="DataGridColumnHeader">
|
||||
<Setter Property="HorizontalContentAlignment" Value="Center" />
|
||||
</Style>
|
||||
<Style TargetType="DataGridCell">
|
||||
<Setter Property="HorizontalContentAlignment" Value="Center" />
|
||||
<Setter Property="VerticalContentAlignment" Value="Center" />
|
||||
</Style>
|
||||
</DataGrid.Resources>
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="ID" Binding="{Binding ID}" Visibility="Hidden" />
|
||||
<DataGridTextColumn Header="Вид спорта" Binding="{Binding Name}"/>
|
||||
<DataGridTextColumn Header="Дата" Binding="{Binding Date}" />
|
||||
<DataGridTextColumn Header="Длительность (мин.)" Binding="{Binding Duration}" ElementStyle="{StaticResource WrapText}"/>
|
||||
<DataGridTextColumn Header="Интенсивность" Binding="{Binding Intensity}" ElementStyle="{StaticResource WrapText}"/>
|
||||
<DataGridTextColumn Header="Заметки" Binding="{Binding Notes}" ElementStyle="{StaticResource WrapText}"/>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
<Button Grid.Column="0" Grid.Row="2" x:Name="btnAddActivity" Grid.ColumnSpan="2" Margin="10" Content="Добавить занятие в план" Click="btnAddActivity_Click"/>
|
||||
<Button Grid.Column="2" Grid.Row="2" x:Name="btnUpdActivity" Grid.ColumnSpan="2" Margin="10" Content="Изменить занятие в плане" Click="btnUpdActivity_Click"/>
|
||||
<Button Grid.Column="4" Grid.Row="2" x:Name="btnDelActivity" Grid.ColumnSpan="2" Margin="10" Content="Удалить занятие" Click="btnDelActivity_Click"/>
|
||||
<Button Grid.Column="0" Grid.Row="1" x:Name="btNutrition" Grid.ColumnSpan="3" Margin="10" Content="Питание" Click="btNutrition_Click"/>
|
||||
<Button Grid.Column="3" Grid.Row="1" x:Name="btChallenges" Grid.ColumnSpan="3" Margin="10" Content="Испытание" Click="btChallenges_Click"/>
|
||||
</Grid>
|
||||
</Window>
|
||||
|
||||
141
Activity/formActivity.xaml.cs
Normal file
141
Activity/formActivity.xaml.cs
Normal file
@@ -0,0 +1,141 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Data;
|
||||
using Npgsql;
|
||||
using SportsTrainingApp.Activity;
|
||||
using SportsTrainingApp.Challenges;
|
||||
using SportsTrainingApp.Nutrition;
|
||||
|
||||
namespace SportsTrainingApp
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for formActivity.xaml
|
||||
/// </summary>
|
||||
public partial class formActivity : Window
|
||||
{
|
||||
int user_id = -1;
|
||||
public formActivity(int _user_id)
|
||||
{
|
||||
InitializeComponent();
|
||||
user_id = _user_id;
|
||||
ShowCurUser(user_id);
|
||||
FillDataGrid(user_id);
|
||||
}
|
||||
|
||||
public class Workout
|
||||
{
|
||||
public int ID { get; set; }
|
||||
public string? Name { get; set; }
|
||||
public DateTime Date { get; set; }
|
||||
public int Duration { get; set; }
|
||||
public string? Intensity { get; set; }
|
||||
public string? Notes { get; set; }
|
||||
}
|
||||
|
||||
private void ShowCurUser(int _user_id)
|
||||
{
|
||||
using (var conn = new NpgsqlConnection(formMain.connectionString))
|
||||
{
|
||||
conn.Open();
|
||||
using (var cmd = new NpgsqlCommand($@"SELECT
|
||||
CONCAT(USERNAME, ' (email - ', EMAIL, ')')
|
||||
FROM
|
||||
DBO.USERS
|
||||
WHERE
|
||||
ID = {_user_id}", conn))
|
||||
{
|
||||
var reader = cmd.ExecuteReader();
|
||||
if (reader.Read())
|
||||
{
|
||||
tbCurUser.Text += reader.GetString(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void FillDataGrid(int _user_id)
|
||||
{
|
||||
using (var conn = new NpgsqlConnection(formMain.connectionString))
|
||||
{
|
||||
conn.Open();
|
||||
using (var cmd = new NpgsqlCommand($@"SELECT
|
||||
WORKOUTS.ID,
|
||||
S.NAME,
|
||||
DATE,
|
||||
DURATION,
|
||||
INTENSITY,
|
||||
NOTES
|
||||
FROM
|
||||
DBO.WORKOUTS
|
||||
LEFT JOIN DBO.SPORTS S ON S.ID = WORKOUTS.SPORT_ID
|
||||
WHERE
|
||||
USER_ID = {_user_id}
|
||||
ORDER BY DATE", conn))
|
||||
{
|
||||
var reader = cmd.ExecuteReader();
|
||||
var workouts = new List<Workout>();
|
||||
while (reader.Read())
|
||||
{
|
||||
workouts.Add(new Workout
|
||||
{
|
||||
ID = reader.GetInt32(0),
|
||||
Name = reader.GetString(1),
|
||||
Date = reader.GetDateTime(2),
|
||||
Duration = reader.GetInt32(3),
|
||||
Intensity = reader.GetString(4),
|
||||
Notes = reader.GetString(5)
|
||||
});
|
||||
}
|
||||
gridActivity.ItemsSource = workouts;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void btnAddActivity_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
new formAddActivity(user_id).ShowDialog();
|
||||
FillDataGrid(user_id);
|
||||
}
|
||||
|
||||
private void btnDelActivity_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var selectedItem = (Workout)gridActivity.SelectedItem;
|
||||
|
||||
if (selectedItem == null)
|
||||
return;
|
||||
|
||||
using (var conn = new NpgsqlConnection(formMain.connectionString))
|
||||
{
|
||||
conn.Open();
|
||||
using (var cmd = new NpgsqlCommand(@$"DELETE FROM DBO.WORKOUTS
|
||||
WHERE
|
||||
ID = {selectedItem.ID}",conn))
|
||||
{
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
FillDataGrid(user_id);
|
||||
}
|
||||
|
||||
private void btnUpdActivity_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var selectedItem = (Workout)gridActivity.SelectedItem;
|
||||
|
||||
if (selectedItem == null)
|
||||
return;
|
||||
|
||||
new formUpdActivity(selectedItem).ShowDialog();
|
||||
|
||||
FillDataGrid(user_id);
|
||||
}
|
||||
|
||||
private void btNutrition_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
new formNutrition(user_id).ShowDialog();
|
||||
}
|
||||
|
||||
private void btChallenges_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
new formChallenges().ShowDialog();
|
||||
}
|
||||
}
|
||||
}
|
||||
35
Activity/formAddActivity.xaml
Normal file
35
Activity/formAddActivity.xaml
Normal file
@@ -0,0 +1,35 @@
|
||||
<Window x:Class="SportsTrainingApp.Activity.formAddActivity"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:SportsTrainingApp.Activity"
|
||||
mc:Ignorable="d"
|
||||
Title="Добавить занятие" Height="150" Width="800" ResizeMode="NoResize" Icon="/free-icon-fitness-4729328.png" WindowStartupLocation="CenterScreen">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1.5*"></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition Width="2*"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="0.5*"></RowDefinition>
|
||||
<RowDefinition ></RowDefinition>
|
||||
<RowDefinition ></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<ComboBox x:Name="cbSports" Grid.Row="1" Grid.Column="0" Height="25" Margin="10"/>
|
||||
<DatePicker Name="dtPicker" Grid.Row="1" Grid.Column="1" Height="25" Margin="10"/>
|
||||
<TextBox x:Name="tbDuration" Grid.Row="1" Grid.Column="2" Height="25" Margin="10"/>
|
||||
<TextBox x:Name="tbIntensivity" Grid.Row="1" Grid.Column="3" Height="25" Margin="10"/>
|
||||
<TextBox x:Name="tbNote" Grid.Row="1" Grid.Column="4" Height="25" Margin="10"/>
|
||||
<TextBlock Grid.Row="0" Grid.Column="0" Text="Вид спорта" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center"/>
|
||||
<TextBlock Grid.Row="0" Grid.Column="1" Text="Дата" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center"/>
|
||||
<TextBlock Grid.Row="0" Grid.Column="2" Text="Длительность (мин.)" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center"/>
|
||||
<TextBlock Grid.Row="0" Grid.Column="3" Text="Интенсивность" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center"/>
|
||||
<TextBlock Grid.Row="0" Grid.Column="4" Text="Примечание" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center"/>
|
||||
<Button Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="3" Height="25" Width="200" Content="Добавить" Click="Button_Click_1"/>
|
||||
<Button Grid.Column="3" Grid.Row="2" Grid.ColumnSpan="3" Height="25" Width="200" Content="Отмена" Click="Button_Click_2"/>
|
||||
</Grid>
|
||||
</Window>
|
||||
93
Activity/formAddActivity.xaml.cs
Normal file
93
Activity/formAddActivity.xaml.cs
Normal file
@@ -0,0 +1,93 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using Npgsql;
|
||||
using static System.Runtime.InteropServices.JavaScript.JSType;
|
||||
|
||||
namespace SportsTrainingApp.Activity
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for formAddActivity.xaml
|
||||
/// </summary>
|
||||
public partial class formAddActivity : Window
|
||||
{
|
||||
int user_id = -1;
|
||||
public formAddActivity(int _user_id)
|
||||
{
|
||||
InitializeComponent();
|
||||
user_id = _user_id;
|
||||
FillCbSports(cbSports);
|
||||
dtPicker.SelectedDate = DateTime.Now;
|
||||
}
|
||||
|
||||
public class SportType
|
||||
{
|
||||
public int id { get; set; }
|
||||
public string name { get; set; }
|
||||
}
|
||||
|
||||
public void FillCbSports(ComboBox cb)
|
||||
{
|
||||
var items = GetData();
|
||||
cbSports.ItemsSource = items;
|
||||
cbSports.DisplayMemberPath = "name";
|
||||
cbSports.SelectedValuePath = "id";
|
||||
cbSports.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
private List<SportType> GetData()
|
||||
{
|
||||
var items = new List<SportType>();
|
||||
string query = "SELECT id, name FROM dbo.sports";
|
||||
|
||||
using (var connection = new NpgsqlConnection(formMain.connectionString))
|
||||
{
|
||||
connection.Open();
|
||||
using (var command = new NpgsqlCommand(query, connection))
|
||||
using (var reader = command.ExecuteReader())
|
||||
{
|
||||
while (reader.Read())
|
||||
{
|
||||
items.Add(new SportType
|
||||
{
|
||||
id = reader.GetInt32(0),
|
||||
name = reader.GetString(1)
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
return items;
|
||||
}
|
||||
|
||||
private void Button_Click_2(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void Button_Click_1(object sender, RoutedEventArgs e)
|
||||
{
|
||||
AddActivity();
|
||||
}
|
||||
|
||||
private void AddActivity()
|
||||
{
|
||||
using (var conn = new NpgsqlConnection(formMain.connectionString))
|
||||
{
|
||||
conn.Open();
|
||||
|
||||
using (var cmd = new NpgsqlCommand("INSERT INTO dbo.workouts(user_id, sport_id, date, duration, intensity, notes) " +
|
||||
"VALUES(@user_id, @sport_id, @date, @duration, @intensity, @note); ", conn))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("user_id", user_id);
|
||||
cmd.Parameters.AddWithValue("date", dtPicker.SelectedDate.Value);
|
||||
cmd.Parameters.AddWithValue("sport_id", cbSports.SelectedValue);
|
||||
cmd.Parameters.AddWithValue("duration", Convert.ToInt32(tbDuration.Text));
|
||||
cmd.Parameters.AddWithValue("intensity", tbIntensivity.Text);
|
||||
cmd.Parameters.AddWithValue("note", tbNote.Text);
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
35
Activity/formUpdActivity.xaml
Normal file
35
Activity/formUpdActivity.xaml
Normal file
@@ -0,0 +1,35 @@
|
||||
<Window x:Class="SportsTrainingApp.Activity.formUpdActivity"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:SportsTrainingApp.Activity"
|
||||
mc:Ignorable="d"
|
||||
Title="Изменить занятие" Height="150" Width="800" ResizeMode="NoResize" Icon="/free-icon-fitness-4729328.png" WindowStartupLocation="CenterScreen">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1.5*"></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition></ColumnDefinition>
|
||||
<ColumnDefinition Width="2*"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="0.5*"></RowDefinition>
|
||||
<RowDefinition ></RowDefinition>
|
||||
<RowDefinition ></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<ComboBox x:Name="cbSports" Grid.Row="1" Grid.Column="0" Height="25" Margin="10"/>
|
||||
<DatePicker Name="dtPicker" Grid.Row="1" Grid.Column="1" Height="25" Margin="10"/>
|
||||
<TextBox x:Name="tbDuration" Grid.Row="1" Grid.Column="2" Height="25" Margin="10"/>
|
||||
<TextBox x:Name="tbIntensivity" Grid.Row="1" Grid.Column="3" Height="25" Margin="10"/>
|
||||
<TextBox x:Name="tbNote" Grid.Row="1" Grid.Column="4" Height="25" Margin="10"/>
|
||||
<TextBlock Grid.Row="0" Grid.Column="0" Text="Вид спорта" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center"/>
|
||||
<TextBlock Grid.Row="0" Grid.Column="1" Text="Дата" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center"/>
|
||||
<TextBlock Grid.Row="0" Grid.Column="2" Text="Длительность (мин.)" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center"/>
|
||||
<TextBlock Grid.Row="0" Grid.Column="3" Text="Интенсивность" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center"/>
|
||||
<TextBlock Grid.Row="0" Grid.Column="4" Text="Примечание" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center"/>
|
||||
<Button Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="3" Height="25" Width="200" Content="Изменить" Click="ButtonUpd_Click"/>
|
||||
<Button Grid.Column="3" Grid.Row="2" Grid.ColumnSpan="3" Height="25" Width="200" Content="Отмена" Click="ButtonCancel_Click"/>
|
||||
</Grid>
|
||||
</Window>
|
||||
102
Activity/formUpdActivity.xaml.cs
Normal file
102
Activity/formUpdActivity.xaml.cs
Normal file
@@ -0,0 +1,102 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using Npgsql;
|
||||
|
||||
namespace SportsTrainingApp.Activity
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for formUpdActivity.xaml
|
||||
/// </summary>
|
||||
public partial class formUpdActivity : Window
|
||||
{
|
||||
formActivity.Workout item;
|
||||
|
||||
public formUpdActivity(formActivity.Workout _item)
|
||||
{
|
||||
InitializeComponent();
|
||||
item = _item;
|
||||
FillFormFields(item);
|
||||
}
|
||||
|
||||
private void FillFormFields(formActivity.Workout _item)
|
||||
{
|
||||
FillCbSports(cbSports);
|
||||
for (int i = 0; i < cbSports.Items.Count; i++)
|
||||
{
|
||||
var sport = cbSports.Items[i] as SportType;
|
||||
if (_item.Name == sport?.name.ToString())
|
||||
{
|
||||
cbSports.SelectedIndex = i;
|
||||
}
|
||||
}
|
||||
dtPicker.SelectedDate = _item.Date;
|
||||
tbDuration.Text = _item.Duration.ToString();
|
||||
tbIntensivity.Text = _item.Intensity?.ToString();
|
||||
tbNote.Text = _item.Notes?.ToString();
|
||||
}
|
||||
|
||||
public class SportType
|
||||
{
|
||||
public int id { get; set; }
|
||||
public string name { get; set; }
|
||||
}
|
||||
|
||||
public void FillCbSports(ComboBox cb)
|
||||
{
|
||||
var items = GetData();
|
||||
cbSports.ItemsSource = items;
|
||||
cbSports.DisplayMemberPath = "name";
|
||||
cbSports.SelectedValuePath = "id";
|
||||
}
|
||||
|
||||
private List<SportType> GetData()
|
||||
{
|
||||
var items = new List<SportType>();
|
||||
string query = "SELECT id, name FROM dbo.sports";
|
||||
|
||||
using (var connection = new NpgsqlConnection(formMain.connectionString))
|
||||
{
|
||||
connection.Open();
|
||||
using (var command = new NpgsqlCommand(query, connection))
|
||||
using (var reader = command.ExecuteReader())
|
||||
{
|
||||
while (reader.Read())
|
||||
{
|
||||
items.Add(new SportType
|
||||
{
|
||||
id = reader.GetInt32(0),
|
||||
name = reader.GetString(1)
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
return items;
|
||||
}
|
||||
|
||||
private void ButtonCancel_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void ButtonUpd_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
using (var conn = new NpgsqlConnection(formMain.connectionString))
|
||||
{
|
||||
conn.Open();
|
||||
using(var cmd = new NpgsqlCommand(@$"UPDATE dbo.workouts
|
||||
SET sport_id=@sport_id, date=@date, duration=@dur, intensity=@intensity, notes=@notes
|
||||
WHERE id = {item.ID};", conn))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("date", dtPicker.SelectedDate.Value);
|
||||
cmd.Parameters.AddWithValue("sport_id", cbSports.SelectedValue);
|
||||
cmd.Parameters.AddWithValue("dur", Convert.ToInt32(tbDuration.Text));
|
||||
cmd.Parameters.AddWithValue("intensity", tbIntensivity.Text);
|
||||
cmd.Parameters.AddWithValue("notes", tbNote.Text);
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user