Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

N3lson

[Resolvido] Erro de ligação

Mensagens Recomendadas

N3lson    17
N3lson

Estou a popular uma GridView através do DataReader ao abrir corre tudo normalmente mas ao tentar "repopular" devido a alterações na base de dados para mostrar as alterações dá o seguinte erro

Exception message: error connecting: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.

E em seguida informa a Exception

Connection must be valid and open

Mas a ligação está bem pois apenas o erro ocorre neste form e quando pretendo editar os valores e pretendo efectuar o refresh da grid


public void ReturnNotas(string estado = "")											// Anotações
	{
		MySqlDataReader readerNotas;

		DataTable dtNotas = new DataTable("Anotações");

		string query = "SELECT * FROM " + Controle.anotacoes;

		if (estado != "")
		{
			query += " WHERE estado=@estado";
		}

		dtNotas.Rows.Clear();
		this.GridNotas.DataSource = null;

		cmd = new MySqlCommand(query, con.liga());

		con.abre();

		cmd.Parameters.AddWithValue("@estado",estado);

		readerNotas = cmd.ExecuteReader();

		dtNotas.Columns.Add("id");
		dtNotas.Columns.Add("Nota");

		while(readerNotas.Read())
		{
			DataRow row = dtNotas.NewRow();
			row[0] = readerNotas["id"];
			row[1] = readerNotas["nota"].ToString().ToUpper();
			dtNotas.Rows.Add(row);
		}
		readerNotas.Close();

		this.GridNotas.DataSource = dtNotas;

		this.GridNotas.Columns[1].Visible = false;

		con.fecha();
	}

Função para repopular a GridView


private void Principal_Activated(object sender, EventArgs e)						   // Acções do utilizador (outros forms)
	{
		if (Controle.controlarUpdate == 1)
		{
			this.UltimasOrdens();
			this.PreventivasEfectuar();
			this.ReturnNotas("1");
			Controle.controlarUpdate = 0;
		}
	}

Editado por N3lson

You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
apocsantos    219
apocsantos

Boa tarde,

Quando vais "actualizar" a datagrid com os novos dados, vindos da bd, vais precisar de fazer uma nova query à bd. Logo para fazeres a nova query, precisas de ter uma ligação estabelecida.

Cordiais cumprimentos,

Apocsantos

  • Voto 1

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

assinatura.jpg

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
N3lson    17
N3lson

A nova query já esta a ser efectuada neste método, sempre que haja alguma alteração na base de dados eu coloco a variável Controle.controlarUpdate = 1


private void Principal_Activated(object sender, EventArgs e)						   // Acções do utilizador (outros forms)
	{
		if (Controle.controlarUpdate == 1)
		{
			this.UltimasOrdens();
			this.PreventivasEfectuar();
			this.ReturnNotas("1");
			Controle.controlarUpdate = 0;
		}
	}

Eu fazia antes com datatable.fill e funcionava bem, mas mudei para o DataRow para controlar o retorno dos valores para apresentação, mas ao efectuar alteração qiando retornar a este form a aplicação crasha e dá o tal erro

Como aconselharias a mudar o código , mas mantendo o uso do DataRow ?

Editado por N3lson

You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
N3lson    17
N3lson

Resolvido, apenas adicionei o try <> catch

Editado por N3lson

You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.