Я создаю C# Приложение Winform с SQL Серверной базой данных, в любой форме я объявляю SqlCOnnection и SqlCommand в классе формы, но я начинаю инициализацию в каждом методе, когда это необходимо. и вот мой код:
public partial class DrinkIncomeForm : Form
{
#region Class Variables
private string conString;
private string queryP1;
private string queryP2;
private SqlConnection con;
private SqlCommand cmd;
private SqlDataAdapter myAdapter;
private SqlDataReader myReader;
private DataTable drinksIncomeTable;
#endregion
public DrinkIncomeForm()
{
InitializeComponent();
}
private void DrinkIncomeForm_Load(object sender, EventArgs e)
{
conString = System.Configuration.ConfigurationManager.ConnectionStrings["MyGymConString"].ConnectionString;
LoadDrinksCombo();
LoadCashierCombo();
DrinkComBox.SelectedIndex = 0;
CashierComBox.SelectedIndex = 0;
LoadDrinksIncomeDGV();
}
private void DrinkComBox_SelectedIndexChanged(object sender, EventArgs e)
{
LoadDrinksIncomeDGV();
}
private void CashierComBox_SelectedIndexChanged(object sender, EventArgs e)
{
LoadDrinksIncomeDGV();
}
private void LoadDrinksIncomeDGV()
{
con = new SqlConnection(conString);
cmd = new SqlCommand();
cmd.Connection = con;
queryP1 = "select TransID, DrinkName, Quantity, Price, Offer, format(TransDate, 'dd/MM/yyyy hh:mm:ss')as TransDate, Cashier from tblDrinksIncome ";
queryP2 = " where 1=1 ";
try
{
con.Open();
cmd.Parameters.Clear();
if(DrinkComBox.SelectedIndex >0)
{
queryP2 += " AND DrinkName=@drinkname";
cmd.Parameters.AddWithValue("@drinkname", DrinkComBox.SelectedItem.ToString());
}
if (CashierComBox.SelectedIndex >0)
{
queryP2 += " AND Cashier=@cashier";
cmd.Parameters.AddWithValue("@cashier", CashierComBox.SelectedItem.ToString());
}
cmd.CommandText = "" + queryP1 + queryP2;
myAdapter = new SqlDataAdapter(cmd);
drinksIncomeTable = new DataTable();
myAdapter.Fill(drinksIncomeTable);
DrinksIncomeDGV.DataSource = drinksIncomeTable;
con.Close();
}
catch
{
con.Close();
MessageBox.Show("Database Error.");
}
}
}
, как вы видите, каждый раз, когда пользователь выбирает из ComboBoxes (Фильтры) новые экземпляры будут созданы. Мой вопрос заключается в том, что это плохо влияет на память и производительность, и если да, то как лучше это сделать? спасибо :)