D_BOB Postado Setembro 20, 2011 Denunciar Share Postado Setembro 20, 2011 Pessoal, estou com um problemaestou tentando verificar se meu banco está vazio, já pesquisei bastante mas nada até agora funcionou, segue codigo try //tenta abrir a conexao com o banco de dados { conn.Open(); SqlCommand cmd = new SqlCommand("select MAX (codigo) as codigo from produto", conn); SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) { textBox1.Text = Convert.ToString(Convert.ToInt32(dr["codigo"].ToString())+ 1); }else { textBox1.Text = "1"; } conn.Close(); } catch //Se não conseguir abrir a conexao executa o comando abaixo { MessageBox.Show("Não foi possivel estabelecer a conexão com o banco!", "Erro de conexão", MessageBoxButtons.OK, MessageBoxIcon.Error); }pelo que vi, teoricamente a linha if (dr.Read()) resolveria meu problema, mas ela sempre retorna truetentei if (dr.HasRows) e tb só retorna truee outrar milhares de tentativas com outras formas de codigo e nada...alguém pode me ajudaruso c# e sql server, obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Xistyle Postado Setembro 20, 2011 Denunciar Share Postado Setembro 20, 2011 Amigo, o problema está no seu select. Sempre que você executar um MAX(campo), mesmo que não haja nenhuma informação, ele retornará uma linha informando zero. Ou seja, seu DataReader terá uma linha contendo a informação zero.No caso, você terá que fazer um outro if dentro do dr.Read():if (dr.Read()) { if (dr["codigo"].ToString() == "0") textBox1.Text = "1"; else textBox1.Text = Convert.ToString(Convert.ToInt32(dr["codigo"].ToString())+ 1); } else { textBox1.Text = "1"; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Lucas Conceição Postado Setembro 20, 2011 Denunciar Share Postado Setembro 20, 2011 Você pode fazer também uma condição dentro do While,tenta usar o dr.HasRows,if (dr.HasRows){ //Não está vazia}else{ //Está vazia} Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 D_BOB Postado Setembro 20, 2011 Autor Denunciar Share Postado Setembro 20, 2011 xistyle,funcionou dessa forma:if (dr.Read()){ if (dr["codigo"].ToString() == "") textBox1.Text = "1"; else textBox1.Text = Convert.ToString(Convert.ToInt32(dr["codigo"].ToString())+ 1);}else{ textBox1.Text = "1";}vlw cara Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
D_BOB
Pessoal, estou com um problema
estou tentando verificar se meu banco está vazio, já pesquisei bastante mas nada até agora funcionou, segue codigo
try //tenta abrir a conexao com o banco de dados
{
conn.Open();
SqlCommand cmd = new SqlCommand("select MAX (codigo) as codigo from produto", conn);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
textBox1.Text = Convert.ToString(Convert.ToInt32(dr["codigo"].ToString())+ 1);
}else
{
textBox1.Text = "1";
}
conn.Close();
}
catch //Se não conseguir abrir a conexao executa o comando abaixo
{
MessageBox.Show("Não foi possivel estabelecer a conexão com o banco!", "Erro de conexão", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
pelo que vi, teoricamente a linha if (dr.Read()) resolveria meu problema, mas ela sempre retorna true
tentei if (dr.HasRows) e tb só retorna true
e outrar milhares de tentativas com outras formas de codigo e nada...
alguém pode me ajudar
uso c# e sql server, obrigado
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.