COMO VERIFICAR CAMPO NULO NO BANCO DE DADOS?
Criei uma rotira para pegar os dados de um RecordSet e, ao pegá-los, verÃficar se ele está vazio. Só ao rodar o programa, mesmo que o banco de dados esteja com a coluna pedida vazia, ele não mostra a mensagem de erro e quando ela está com a coluna preenchida ele não mostra as informações referêntes a ela. Sendo que se eu tirar o loop While ele pega os dados corretamente no caso de haver conteúdo no banco, e quando não há ele dá o seguinte erro: [Ô]Tentativa inválida de leitura quando não existem dados[Ô].
Como eu posso fazer pra realizar essa verÃficação? Segue o código para melhor copreenção:
While(drM.Reader())
{
if(drM.IsDBNull(1))
{
MessageBox.Show([Ô]Não há computador registrado com o patrimônio sugerido![Ô]);
}
else
{
//preenche os Labels com os dados do banco sobre o computador
lblPatrimonioMicro.Text =drM[1].ToString();
lblMarcaMicro.Text = drM[2].ToString();
lblModeloMicro.Text = drM[3].ToString();
lblSenhaAdmin.Text = drM[4].ToString();
lblLocalMicro.Text = drM[5].ToString();
//if para marcar o checkbox da garantia
if (drM[6].ToString() == [Ô]True[Ô])
{
cbGarantia.Checked = true;
}
else
{
cbGarantia.Checked = false;
}
lblSerialMicro.Text = drM[7].ToString();
lblPatrimonioMonitor.Text = drM[8].ToString();
lblSerialMonitor.Text = drM[9].ToString();
lblMarcaMonit.Text = drM[10].ToString();
lblModeloMonit.Text = drM[11].ToString();
lblEstadoMonit.Text = drM[12].ToString();
lblLocalMonitor.Text = drM[13].ToString();
lblNomeRede.Text = drM[14].ToString();
lblEstadoMicro.Text = drM[15].ToString();
lblIpRede.Text = drM[16].ToString();
//fecha a conexão com banco de dados
conn.Close();
}
}
Como eu posso fazer pra realizar essa verÃficação? Segue o código para melhor copreenção:
While(drM.Reader())
{
if(drM.IsDBNull(1))
{
MessageBox.Show([Ô]Não há computador registrado com o patrimônio sugerido![Ô]);
}
else
{
//preenche os Labels com os dados do banco sobre o computador
lblPatrimonioMicro.Text =drM[1].ToString();
lblMarcaMicro.Text = drM[2].ToString();
lblModeloMicro.Text = drM[3].ToString();
lblSenhaAdmin.Text = drM[4].ToString();
lblLocalMicro.Text = drM[5].ToString();
//if para marcar o checkbox da garantia
if (drM[6].ToString() == [Ô]True[Ô])
{
cbGarantia.Checked = true;
}
else
{
cbGarantia.Checked = false;
}
lblSerialMicro.Text = drM[7].ToString();
lblPatrimonioMonitor.Text = drM[8].ToString();
lblSerialMonitor.Text = drM[9].ToString();
lblMarcaMonit.Text = drM[10].ToString();
lblModeloMonit.Text = drM[11].ToString();
lblEstadoMonit.Text = drM[12].ToString();
lblLocalMonitor.Text = drM[13].ToString();
lblNomeRede.Text = drM[14].ToString();
lblEstadoMicro.Text = drM[15].ToString();
lblIpRede.Text = drM[16].ToString();
//fecha a conexão com banco de dados
conn.Close();
}
}
Vamos lá. Para evitar problemas com colunas nulas, coloca o código abaixo em todas pode PODEM ser vazias:
Tenta isso. Deve resolver...
lblSerialMicro.Text = (drM.IsDBNull(7) || String.IsNullOrEmpty(drM.GetString(7)) ? [Ô][Ô] : db.GetString(7)
Tenta isso. Deve resolver...
Não deu muito certo não, eu coloquei lá mas está dando o seguinte erro:
The name [ô]db[ô] does not existe in the current context.
Eu tentei trocar o [ô]db[ô] pelo RecordSet (drM) mas não funcionou também.
The name [ô]db[ô] does not existe in the current context.
Eu tentei trocar o [ô]db[ô] pelo RecordSet (drM) mas não funcionou também.
Cara, eu consegui, com ajuda de uma amiga achar um jeito de fazer isso. Segue o código que funcionou pra fazer o que eu queria:
if(drM.Read())
{
//preenche os Labels com os dados do banco sobre o computador
lblPatrimonioMicro.Text =drM[1].ToString();
lblMarcaMicro.Text = drM[2].ToString();
lblModeloMicro.Text = drM[3].ToString();
lblSenhaAdmin.Text = drM[4].ToString();
lblLocalMicro.Text = drM[5].ToString();
//if para marcar o checkbox da garantia
if (drM[6].ToString() == [Ô]True[Ô])
{
cbGarantia.Checked = true;
}
else
{
cbGarantia.Checked = false;
}
lblSerialMicro.Text = drM[7].ToString();
lblPatrimonioMonitor.Text = drM[8].ToString();
lblSerialMonitor.Text = drM[9].ToString();
lblMarcaMonit.Text = drM[10].ToString();
lblModeloMonit.Text = drM[11].ToString();
lblEstadoMonit.Text = drM[12].ToString();
lblLocalMonitor.Text = drM[13].ToString();
lblNomeRede.Text = drM[14].ToString();
lblEstadoMicro.Text = drM[15].ToString();
lblIpRede.Text = drM[16].ToString();
}
else
{
MessageBox.Show([Ô]Não há computador registrado com o patrimônio sugerido![Ô]);
}
//fecha a conexão com banco de dados
drM.Close();
conn.Close();
}
Isso funcionou perfeitamente. Vlw pela ajuda.
if(drM.Read())
{
//preenche os Labels com os dados do banco sobre o computador
lblPatrimonioMicro.Text =drM[1].ToString();
lblMarcaMicro.Text = drM[2].ToString();
lblModeloMicro.Text = drM[3].ToString();
lblSenhaAdmin.Text = drM[4].ToString();
lblLocalMicro.Text = drM[5].ToString();
//if para marcar o checkbox da garantia
if (drM[6].ToString() == [Ô]True[Ô])
{
cbGarantia.Checked = true;
}
else
{
cbGarantia.Checked = false;
}
lblSerialMicro.Text = drM[7].ToString();
lblPatrimonioMonitor.Text = drM[8].ToString();
lblSerialMonitor.Text = drM[9].ToString();
lblMarcaMonit.Text = drM[10].ToString();
lblModeloMonit.Text = drM[11].ToString();
lblEstadoMonit.Text = drM[12].ToString();
lblLocalMonitor.Text = drM[13].ToString();
lblNomeRede.Text = drM[14].ToString();
lblEstadoMicro.Text = drM[15].ToString();
lblIpRede.Text = drM[16].ToString();
}
else
{
MessageBox.Show([Ô]Não há computador registrado com o patrimônio sugerido![Ô]);
}
//fecha a conexão com banco de dados
drM.Close();
conn.Close();
}
Isso funcionou perfeitamente. Vlw pela ajuda.
Tópico encerrado , respostas não são mais permitidas