0
My DAL class launched the Typeinitializationexception exception. How to correct?
Follows 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();
}
}
}
How is your class
ConvenioDao()
?– JcSaint
Without knowing the context of your application it becomes impossible to help you.
– Marcell Alves
Post the class code
ConvenioDAO
, please– igventurelli
I added the class I’m trying to use
– Danillo Victtor
Put a brakepoint on
connString
andfactory
and debug. I believe the error is there– igventurelli
Like your
connection string
is stated in theapp.config
?– JcSaint