Fill bank by expanding a given value in so many items

0

I have in the bank the registration of the building, with the amount of rooms qtdSala , among others. I'm trying to insert, in another grid, each room according to the value entered in qtdSala , to register in the rooms table, through a for, so I tried like this:

private void CriarSalas(int nSalas)
{
    for (int i = 0; 1 < nSalas; i++)
    {

        try
        {
            SqlConnection con = new SqlConnection(conexaoString);

            SqlCommand cmd = new SqlCommand(@"INSERT INTO salas
                     (nomeSala)
                VALUES
                     (@nomeSala)", con);

            cmd.Parameters.AddWithValue("@nomeSala", i);

            con.Open();
            cmd.ExecuteNonQuery();

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
        finally
        {
            //Atualiza Grid
            this.salasTableAdapter.Fill(this.bdDataSet.salas);

            SqlConnection con = new SqlConnection(conexaoString);
            con.Close();
            con.Dispose();
        }

    }
}

It does not work, I'm not sure how to reference nsalas ...

It should take qtdsalas , 20 for example, and create sala01 , sala02 ... to sala20 . Follow the table template:

TABELA SALAS
____________________________
| Id | IdPredio | NomeSala |
| 23 |       05 | "Sala01" |
| 24 |       05 | "Sala02" |
| 25 |       05 | "Sala03" |
| 26 |       05 | "Sala04" |
    
asked by anonymous 01.02.2017 / 04:30

1 answer

0

There are several points to consider, following the refactored code:

// tenha nomes de variaveis/parametros o mais claro possivel
private void CriarSalas(int idPredio, int quantidade) 
{
    try
    {
        // Cria a abre uma conexão no inicio do processo
        // Abrir e fechar conexão possui alto custo de processamento
        // Então abre-se no inicio do processo - loop - e encerra apenas no fim
        var con = new SqlConnection(conexaoString);
        con.Open();

        // para i igual a zero; enquanto i for menor que quantidade; incrementa +1
        for (int i = 0; i < quantidade; i++)
        {
            // Reduza a quantidade de tráfego entre sua aplicação e o banco de dados.
            // Lembre-se, cada caracter possui pelo menos 16-bits de tamanho ou 2-bytes.
            var cmd = new SqlCommand(
                @"INSERT INTO salas(idPredio, nomeSala)VALUES(@idPredio,@nomeSala)", con);

            cmd.Parameters.AddWithValue("@idPredio", idPredio);
            cmd.Parameters.AddWithValue("@nomeSala", $"Sala0{i}");

            cmd.ExecuteNonQuery();    
        }
    }
    catch (Exception ex)
    {
        // Se houver error, exibe a mensagem do erro
        MessageBox.Show($"Erro ao tentar criar sala: {ex.Message}");
    }
    finally
    {
        // Isso deveria ser feito em outro método.
        // Cada método, classe, deve ter responsabilidade unica
        // Esse método deve apenas criar salas, crie outro para atualizar o grid. 
        // Atualiza Grid, porém isso deveria ser feito em outro método.
        //this.salasTableAdapter.Fill(this.bdDataSet.salas);

        // Ao terminar, encerra a conexão    
        con.Close();
        con.Dispose();
    }
}
    
01.02.2017 / 10:26