Conexão com o Banco de Dados: Aberta ou Fechada?
Boa Noite, Tudo Bem?
Pessoal, possuo uma aplicação feita em Windows Forms com o uso de C#.
Eu tenho muitas funções com requisições ao banco de dados, um exemplo de uma função que realiza muitas requisições:
private void BTN_REALIZAR_PEDIDO_Click(object sender, EventArgs e)
{
if (Componentes.VERIFICAR_SE_OS_TEXT_BOX_ESTAO_PREENCHIDOS(TB_NOME_DO_CLIENTE, TB_CIDADE, TB_CEP, TB_BAIRRO, TB_ENDERECO, TB_ESTADO, TB_NUMERO_ENDERECO, TB_UF) == true)
{
if (LISTVIEW_CarrinhoCompra.Items.Count > 0)
{
if (Componentes.RETIRAR_CARACTERES_INADEQUADOS_TELEFONE(MTB_TELEFONE.Text) != "" && CB_ENTREGADOR.Text != "")
{
if (BancoClientes.VERIFICAR_SE_TELEFONE_JA_ESTA_CADASTRADO(Componentes.RETIRAR_CARACTERES_INADEQUADOS_TELEFONE(MTB_TELEFONE.Text)) == true)
{
if (BancoPedidos.VERIFICAR_SE_CLIENTE_ESTA_COM_PEDIDO_ABERTO_PELO_TELEFONE(Componentes.RETIRAR_CARACTERES_INADEQUADOS_TELEFONE(MTB_TELEFONE.Text)) == false)
{
}
else
{
MessageBox.Show("Esse cliente já está com pedido aberto, finalize-o, para criar um novo pedido.", "Tente novamente", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
}
else
{
MessageBox.Show("É necessário que o cliente esteja cadastrado no sistema para realizar um pedido.", "Tente Novamente", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
}
else
{
MessageBox.Show("Erro, não foi possível confirmar o pedido, tente novamente", "Tente novamente", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
}
else
{
MessageBox.Show("Você não adicionou nenhum produto no carrinho de compra!", "Tente Novamente", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
}
else
{
MessageBox.Show("Nem todos os campos estão preenchidos, tente novamente!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
Como pode-se perceber, por apenas um clique em um botão foi realizada duas requisições no banco.
No entanto, nessas requisições, a conexão é aberta e fechada:
public static bool Function(string Fun)
{
try
{
using (MySqlCommand Comando = CONEXAO_BANCO().CreateCommand())
{
Comando.CommandText = "";
using (DataTable Data = new DataTable())
{
using (MySqlDataAdapter dataAdapter = new MySqlDataAdapter(Comando))
{
dataAdapter.Fill(Data);
}
if (Data.Rows.Count > 0)
{
return true;
}
else
{
return false;
}
}
}
}
catch
{
throw;
}
finally
{
CONEXAO_BANCO().Close();
}
}
Eu posso deixá-las aberta ou não afetará no tempo de requisição?