Problems with DAO

0

My DAL class has thrown the TypeInitializationException exception. How to correct?

Follow the code

public partial class FrmConvenio : Form
{

    ConvenioDAO convenioDAO = new ConvenioDAO(); // Lança TypeInitializationException

    public FrmConvenio()
    {
        InitializeComponent();
    }

    private void btnGravarConvenio_Click(object sender, EventArgs e)
    {
        using (SqlConnection conexao = new SqlConnection())
        {
            conexao.ConnectionString = ConfigurationManager.ConnectionStrings["dbConnString"].ConnectionString;
            try
            {
                conexao.Open();
                MessageBox.Show("Conexao Aberta");
                Convenio convenio = new Convenio(txtNomeConvenio.Text);

                convenioDAO.Inserir(conexao, convenio);
                MessageBox.Show("Convênio " + txtNomeConvenio.Text + " foi cadastrado com sucesso");
            }
            catch(Exception ex)
            {
                MessageBox.Show("Não foi possível gravar as informações no banco de dados" + ex.StackTrace + ex.Message);
            }
        }
    }
  }
}

DAO Class

public class ConvenioDAO
{
    public static string connString = ConfigurationManager.ConnectionStrings["dbConnString"].ConnectionString;
    public static DbProviderFactory factory = DbProviderFactories.GetFactory(ConfigurationManager.AppSettings["dbProvider"]);

    /// <summary>
    /// Método que insere o nome do convênio no BD
    /// </summary>
    /// <param name="conn">Nome da conexao do banco que está configurado</param>
    /// <param name="c">Variável da classe convenio</param>
    public void Inserir(DbConnection conn, Convenio c)
    {
        DbCommand cmd = factory.CreateCommand();
        cmd.Connection = conn;
        cmd.CommandText = "INSERT INTO convenio (nome) VALUES (@Nome)";

        DbParameter param = factory.CreateParameter();
        param.ParameterName = "@Nome";
        param.Value = c.NomeConvenio;
        cmd.Parameters.Add(param);

        cmd.ExecuteNonQuery();
    }

    /// <summary>
    /// Método que retorna todos os convênios cadastrados no BD.
    /// </summary>
    /// <param name="conn">Nome da conexão do BD configurado.</param>
    /// <returns>Retorna uma lista de convenios cadastrados.</returns>
    public List<Convenio> ListarConvenio(DbConnection conn)
    {
        List<Convenio> convenio = new List<Convenio>();
        using (DbCommand cmd = factory.CreateCommand())
        {
            cmd.Connection = conn;
            cmd.CommandText = "SELECT codigo, nome FROM convenio ORDER BY codigo";

            using (DbDataReader dr = cmd.ExecuteReader())
            {
                while (dr.Read())
                {
                    Convenio c = new Convenio();
                    c.codigo = (int)dr["codigo"];
                    c.NomeConvenio = (string)dr["nome"];
                    convenio.Add(c);
                }
            }
            return convenio;
        }
    }

    /// <summary>
    /// Método que exclui o convênio através do seu código.
    /// </summary>
    /// <param name="conn">Conexao de BD configurado.</param>
    /// <param name="codigo">Codigo da referencia que é passado como parametro para realizar a exclusão.</param>
    public void DeletarConvenio(DbConnection conn, int codigo)
    {
        DbCommand cmd = factory.CreateCommand();
        cmd.Connection = conn;
        cmd.CommandText = "DELETE FROM convenio WHERE codigo = @codigo";

        DbParameter param = factory.CreateParameter();
        param.ParameterName = "@codigo";
        param.Value = codigo;
        cmd.Parameters.Add(param);

        cmd.ExecuteNonQuery();
    }

    /// <summary>
    /// Método que atualiza os dados no BD
    /// </summary>
    /// <param name="conn">Conexão de BD configurado.</param>
    /// <param name="c">Objeto convenio passado por referencia.</param>
    public void AtualizarConvenio(DbConnection conn, Convenio c)
    {
        DbCommand cmd = factory.CreateCommand();
        cmd.Connection = conn;
        cmd.CommandText = "UPDATE convenio SET nome = @nome WHERE codigo = @codigo";

        DbParameter param = factory.CreateParameter();
        param.ParameterName = "@codigo";
        param.Value = c.codigo;
        cmd.Parameters.Add(param);

        param = factory.CreateParameter();
        param.ParameterName = "@nome";
        param.Value = c.NomeConvenio;
        cmd.Parameters.Add(param);

        cmd.ExecuteNonQuery();
    }
}
}
    
asked by anonymous 22.03.2017 / 15:53

1 answer

0

I believe this will solve your problem. I simulated an object class "Agreement". Class Agreement:

public class Convenio
{
      public string Nome { get; set; }
}

Button code:

   private void btnGravarConvenio_Click(object sender, EventArgs e)
    {      
            Convenio convenio = new Convenio()
            convenio.Nome = txtNomeConvenio;
            ConvenioDao dao = new ConvenioDao()
            string resultado = dao.Inserir(convenio);
            MessageBox.Show(resultado);
     }

And finally the Dal class:

    public class Estoque__Dal
    { 
       private String strconn;
       private SqlConnection conn;

       public Estoque__Dal(){
     strconn =      ConfigurationManager.ConnectionStrings["principal"].ConnectionString; //@"Data Source= TI-2-PC\SQLEXPRESS;Initial Catalog=Estoque_CDR;User ID=sa;Password=18"; //string de conexão pegando do webconfig
    conn = new SqlConnection(strconn);
    conn.Close();

  }

   public string Inserir(Convenio p)
    {
        try{
        conn.Open();
        SqlTransaction transacao = conn.BeginTransaction();
        StringBuilder sb = new StringBuilder();
        String sqlProduto = "INSERT INTO [dbo].Convenio ([Nome] VALUES (@Nome)";
        SqlCommand cmdProduto = new SqlCommand(sqlProduto, conn, transacao);
        cmdProduto.Parameters.AddWithValue("@Nome", p.Nome);

        cmdProduto.ExecuteNonQuery();
        transacao.Commit();
        conn.Close();

        return "o "+p.Nome+"foi cadastrado com sucesso";
        }
        catch(Exception ex)
        {
        return "Erro ao gravar: "+ex.Message;
        }
    } 


}

Hugs!

    
24.03.2017 / 12:47