D_BOB Posted September 20, 2011 Report Share Posted September 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 Quote Link to comment Share on other sites More sharing options...
0 Xistyle Posted September 20, 2011 Report Share Posted September 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"; } Quote Link to comment Share on other sites More sharing options...
0 Lucas Conceição Posted September 20, 2011 Report Share Posted September 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} Quote Link to comment Share on other sites More sharing options...
0 D_BOB Posted September 20, 2011 Author Report Share Posted September 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 Quote Link to comment Share on other sites More sharing options...
Question
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 to comment
Share on other sites
3 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.