none
SQL Server 2000 RRS feed

  • Discussão Geral

  • Galera, estou utilizando o codigo abaixo, porém para dar manutenção é mt complicado, gostaria de dicas para melhorar, estou pensando em criar proc mais não sei como fazer em C# (as proc no sql tudo bem) alguem poderia me ajudar?

    segue um exemplo de um GID

    this.Cursor = Cursors.WaitCursor;
                    // Conexão
                    string strProvider = "Data Source=ip, porta; Integrated Security=SSPI;";
                    //define a instrução SQL
                    string strSql = "SELECT mesano AS 'Data',subpro AS 'Tarifa',nmproduto AS 'Descrição da Tarifa',grupo AS 'Grupo',SUM(res_receit) AS 'Receita' FROM bd.dbo.tb WHERE subpro = " + this.lblTarifa.Text + " GROUP BY mesano,subpro,nmproduto,grupo ORDER BY mesano";
                    //cria a conexão com o banco de dados
                    SqlConnection sqlConn = new SqlConnection(strProvider);
                    //cria o objeto command para executar a instruçao sql
                    SqlCommand cmd = new SqlCommand(strSql, sqlConn);
    
                    try
                    {
                        //abre a conexao
                        sqlConn.Open();
                        //define o tipo do comando 
                        cmd.CommandType = CommandType.Text;
                        //cria um dataadapter
                        SqlDataAdapter da = new SqlDataAdapter(cmd);
                        //cria um objeto datatable
                        DataTable dt = new DataTable();
                        //preenche o datatable via dataadapter
                        da.Fill(dt);
                        //atribui o datatable ao datagridview para exibir o resultado
                        this.dgvTarifa.DataSource = dt;
                        this.dgvTarifa.AllowUserToAddRows = false;
                        this.dgvTarifa.AllowUserToDeleteRows = false;
                        int qtd_linhas = dgvTarifa.RowCount;
                        if (qtd_linhas >= 65537)
                        {
                            MessageBox.Show("Sua consulta retornou " + qtd_linhas + " registros, por tanto não irá conseguir exportar para o Excel.", "Atenção");
                            this.btnExcel.Enabled = false;
                        }
                        else
                        {
                            MessageBox.Show("Sua consulta retornou " + qtd_linhas + " registros.", "Atenção");
                            this.btnExcel.Enabled = true;
                        }
                    }
                    catch (SqlException ex)
                    {
                        MessageBox.Show("Erro de acesso aos dados " + ex.Message, "Erro");
    
                    }
                    finally
                    {
                        // fecho a conexão
                        sqlConn.Close();
                    }

    Edgar Esteves - www.localdosuporte.com.br
    sexta-feira, 15 de maio de 2009 19:44

Todas as Respostas

  • O ideal seria separar o acesso a dados em uma ClassLibrary e acessa-la de sua aplicação, assim ajudando mais na sua manutenção.

    Mais informações em: http://www.microsoft.com/brasil/msdn/tecnologias/arquitetura/Layers_Developing.mspx


    Mas não entrando no mérito de separar o código em camadas, me baseando de continuar todo o código junto da maneira que está, eu faria os seguintes procedimentos:

    - Criar um Arquivo de Settings (ou um  App.Config) para armazenas a string de conexao com o banco de dados, assim não precisando fazer um novo build toda vez que houver alguma alteração de servidor.

    - Utilizando procedures fica da seguinte forma detalhes em negrito:

     
    SqlConnection sqlConn = new SqlConnection(strProvider);
    //cria o objeto command para executar a instruçao sql
    SqlCommand cmd = new SqlCommand("NOMEDAPROCEDURE" , sqlConn);

    try
    {
    //abre a conexao
    sqlConn.Open();
    //Não precisa abrir a conexão caso continue usando SqlDataAdapter

    //define o tipo do comando
    cmd.CommandType = CommandType.StoredProcedure;
    //Adicione o parametros que necessite
    cmd.Parameters.Add("@tarifa", SqlDbType.decimal).Value = this.lblTarifa.Text;
    //cria um dataadapter
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    //cria um objeto datatable
    DataTable dt = new DataTable();
    //preenche o datatable via dataadapter
    da.Fill(dt);
    //atribui o datatable ao datagridview para exibir o resultado
    this .dgvTarifa.DataSource = dt;


    Obs.: Caso eu tenha escrito alguns dos comandos de forma errada o intellisense do VS irá me corrigir;


    Renato Veiga Jr / MCAD .Net
    sexta-feira, 22 de maio de 2009 19:00