N3lson 18 Posted June 15, 2016 Report Share Posted June 15, 2016 (edited) 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; } } Edited June 15, 2016 by 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. Link to post Share on other sites
apocsantos 206 Posted June 15, 2016 Report Share Posted June 15, 2016 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 1 Report "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" Link to post Share on other sites
N3lson 18 Posted June 15, 2016 Author Report Share Posted June 15, 2016 (edited) 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 ? Edited June 16, 2016 by 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. Link to post Share on other sites
N3lson 18 Posted June 16, 2016 Author Report Share Posted June 16, 2016 (edited) Resolvido, apenas adicionei o try <> catch Edited June 16, 2016 by 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. Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now