Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal tenho o codigo abaixo, que funciona parcialmente, ele faz inclusão, alteração, e exclusão corretamente, o problema é que
quando tento propositadamente inserir um novo registro com o mesmo código de usuario. ele da a mensagem corretamente que já existe esse código na mensagem.box e da esse erro aqui:
There is already an open DataReader associated with this Connection which must be closed first.
traduzindo = Já existe um DataReader aberto associado a esta conexão que deve ser fechado primeiro.
solicito uma ajuda de como resolver, apontando o erro no codigo abaixxo.
desde já agradeço
o codigo é esse abaixo,
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace GerenciamentoEleitores
{
public partial class frmCadastroUsuarios : Form
{
MySqlConnection dbConexao;
MySqlDataAdapter dbAdapter;
MySqlCommand cmdIncluir, cmdConsultar;
public DataSet dsBanco;
public string Banco = "Persist Security Info=False;server=localhost;database=bdgerpol;uid=root;server=localhost;database=bdgerpol;uid=root;pwd=2525";
public int linhaClick;
public frmCadastroUsuarios()
{
InitializeComponent();
verificarBanco();
travaJanelas();
this.dtgUsuario.Columns[2].Visible = false;
this.dtgUsuario.Columns[3].Visible = false;
}
public void travaJanelas()
{
txtCodigoUsuario.Enabled = false;
txtNomeUsuario.Enabled = false;
txtEmailUsuario.Enabled = false;
txtSenhaUsuario.Enabled = false;
}
public void destravaJanelas()
{
txtCodigoUsuario.Enabled = true;
txtNomeUsuario.Enabled = true;
txtEmailUsuario.Enabled = true;
txtSenhaUsuario.Enabled = true;
txtCodigoUsuario.Focus();
}
// função para conexão ao banco de dados
private void verificarBanco()
{
dsBanco = new DataSet();
dbConexao = new MySqlConnection(Banco);
try
{
dbConexao.Open();
}
catch
{
MessageBox.Show("Problemas com o Banco de Dados");
}
if (dbConexao.State == ConnectionState.Open)
{
atualizaGrid();
}
}
private void atualizaGrid()
{
string sql = "Select * from tbusuario";
dbAdapter = new MySqlDataAdapter(sql, dbConexao);
dsBanco = new DataSet();
dbAdapter.Fill(dsBanco, "tbusuario");
dtgUsuario.DataSource = dsBanco;
dtgUsuario.DataMember = "tbusuario";
}
protected void limpar()
{
txtCodigoUsuario.Text = "";
txtNomeUsuario.Text = "";
txtEmailUsuario.Text = "";
txtSenhaUsuario.Text = "";
}
private void frmCadastroUsuarios_Load(object sender, EventArgs e)
{
btnExcluir.Enabled = false;
btnAlterar.Enabled = false;
btnIncluir.Enabled = false;
btnGrava.Enabled = false;
btnCancelar.Enabled = false;
}
private void btnSair_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnNovo_Click(object sender, EventArgs e)
{
destravaJanelas();
limpar();
btnNovo.Enabled = false;
btnIncluir.Enabled = true;
btnCancelar.Enabled = true;
btnExcluir.Enabled = false;
btnAlterar.Enabled = false;
}
private void btnIncluir_Click(object sender, EventArgs e)
{
if ((txtCodigoUsuario.Text != string.Empty) && (txtNomeUsuario.Text != string.Empty) && (txtEmailUsuario.Text != string.Empty) && (txtSenhaUsuario.Text != string.Empty))
{
cmdConsultar = new MySqlCommand("select codigousuario from tbusuario where codigousuario=" + txtCodigoUsuario.Text + "", dbConexao);
MySqlDataReader retconsulta = cmdConsultar.ExecuteReader();
if (retconsulta.HasRows)
{
MessageBox.Show("Esse código já existe", "Mensagem do Sistema");
}
else
{
retconsulta.Close();
MySqlConnection cn2 = new MySqlConnection(Banco);
cn2.Open();
string incluiSql = "insert into tbusuario(codigousuario, nomeusuario, emailusuario, senhausuario) values (" + txtCodigoUsuario.Text + ",'" + txtNomeUsuario.Text + "','" + txtEmailUsuario.Text + "','" + txtSenhaUsuario.Text + "')";
cmdIncluir = new MySqlCommand(incluiSql, cn2);
cmdIncluir.ExecuteNonQuery();
MessageBox.Show("Inclusão efetuada com sucesso!", "Mensagem do Sistema");
}
limpar();
travaJanelas();
atualizaGrid();
btnIncluir.Enabled = false;
btnCancelar.Enabled = false;
btnNovo.Enabled = true;
}
else
{
MessageBox.Show("Obrigatório o preenchimento dos campos", "Mensagem de Alerta");
txtCodigoUsuario.Focus();
}
}
private void dtgUsuario_CellClick(object sender, DataGridViewCellEventArgs e)
{
travaJanelas();
btnCancelar.Enabled = false;
btnAlterar.Enabled = true;
btnExcluir.Enabled = true;
btnIncluir.Enabled = false;
btnNovo.Enabled = true;
linhaClick = int.Parse(e.RowIndex.ToString());
txtCodigoUsuario.Text = dtgUsuario[0, linhaClick].Value.ToString();
txtNomeUsuario.Text = dtgUsuario[1, linhaClick].Value.ToString();
txtEmailUsuario.Text = dtgUsuario[2, linhaClick].Value.ToString();
txtSenhaUsuario.Text = dtgUsuario[3, linhaClick].Value.ToString();
}
private void btnExcluir_Click(object sender, EventArgs e)
{
if (txtCodigoUsuario.Enabled == false && txtCodigoUsuario.Text == string.Empty)
{
MessageBox.Show("Nenhum item selecionado!!!", "Mensagem");
return;
}
string sqlDelete = "delete from tbusuario where codigousuario =" +
dtgUsuario[0, linhaClick].Value.ToString();
MySqlCommand cmdExcluir = new MySqlCommand(sqlDelete, dbConexao);
cmdExcluir.ExecuteNonQuery();
MessageBox.Show("Registro Eliminado com Sucesso!!!", "Mensagem");
limpar();
atualizaGrid();
btnExcluir.Enabled = false;
btnAlterar.Enabled = false;
btnNovo.Enabled = true;
}
private void btnAlterar_Click(object sender, EventArgs e)
{
if (txtCodigoUsuario.Enabled == false && txtCodigoUsuario.Text == string.Empty)
{
MessageBox.Show("Nenhum item selecionado!!!", "Mensagem");
return;
}
destravaJanelas();
btnNovo.Enabled = false;
btnExcluir.Enabled = false;
btnCancelar.Enabled = true;
btnAlterar.Enabled = false;
btnGrava.Enabled = true;
}
private void btnCancelar_Click(object sender, EventArgs e)
{
travaJanelas();
limpar();
btnNovo.Enabled = true;
btnIncluir.Enabled = false;
btnCancelar.Enabled = false;
btnGrava.Enabled = false;
}
private void btnGrava_Click(object sender, EventArgs e)
{
if (txtCodigoUsuario.Text == string.Empty &&
txtNomeUsuario.Text == string.Empty &&
txtEmailUsuario.Text == string.Empty &&
txtSenhaUsuario.Text == string.Empty)
{
MessageBox.Show("Campos Obrigatórios", "Mensagem");
return;
}
string sqlUpdate = "update tbusuario set " +
"codigousuario =" + txtCodigoUsuario.Text + "," +
"nomeusuario ='" + txtNomeUsuario.Text + "'," +
"emailusuario = '" + txtEmailUsuario.Text + "'," +
"senhausuario ='" + txtSenhaUsuario.Text + "'" +
" where codigousuario =" +
dtgUsuario[0, linhaClick].Value.ToString();
MySqlCommand cmdAlterar = new MySqlCommand(sqlUpdate, dbConexao);
cmdAlterar.ExecuteNonQuery();
MessageBox.Show("Registro Alterado com Sucesso!!!", "Mensagem");
limpar();
atualizaGrid();
btnExcluir.Enabled = false;
btnAlterar.Enabled = false;
btnNovo.Enabled = true;
btnCancelar.Enabled = false;
btnGrava.Enabled = false;
}
private void btnProcurar_Click(object sender, EventArgs e)
{
if (btnProcurar.Text == "Procurar")
{
btnProcurar.Text = "Executar";
txtNomeUsuario.Enabled = true;
txtNomeUsuario.Focus();
}
else
{
btnProcurar.Text = "Procurar";
txtNomeUsuario.Enabled = false;
if (txtNomeUsuario.Text != "")
{
string sqlSelect = "select * from tbusuario where nomeusuario like '%" +
txtNomeUsuario.Text + "%'";
MySqlCommand cmdPesquisar = new MySqlCommand(sqlSelect, dbConexao);
cmdPesquisar.ExecuteNonQuery();
dbAdapter = new MySqlDataAdapter(sqlSelect, dbConexao);
dsBanco = new DataSet();
dbAdapter.Fill(dsBanco, "tbusuario");
dtgUsuario.DataSource = dsBanco;
dtgUsuario.DataMember = "tbusuario";
}
else
{
atualizaGrid();
}
txtNomeUsuario.Clear();
}
}
}
}Carregando comentários...