Usuário com melhor resposta
Erro Login

Pergunta
-
Boa tarde.
Estou tentando fazer um login, mas esse erro insiste em aparecer, alguém pode me dar uma luz?
Erro: ExecuteScalar: Connection property has not been initialized.
MEU CODIGO:
try
{
string login = TextBoxLogin.Text;
string senha = TextBoxSenha.Text;
SqlConnection connection = new SqlConnection(
WebConfigurationManager.ConnectionStrings["kaikoConnectionString"].ToString());
connection.Open();
SqlCommand command = new SqlCommand("SELECT COUNT(id_cliente) FROM clientes WHERE email_cliente = @email AND senha_cliente = @senha");
command.Parameters.Add("@email", SqlDbType.VarChar).Value = login;
command.Parameters.Add("@senha", SqlDbType.VarChar).Value = senha;
int contador = (int)command.ExecuteScalar();
if (contador > 0)
{
Session["logado"] = true;
Session["erro_login"] = null;
}
else
{
Session["erro_login"] = true;
TextBoxLogin.Text = "Login invalido";
}
connection.Close();
}
catch (Exception)
{
throw;
}Obrigado.
Obrigado.
Respostas
-
Boa tarde não estou vendo a ligação do seu command com o abertura do banco de dados
tente isso Ex :
SqlCommand command = new SqlCommand();
command.Connection = connection; // isso está faltando no seu código
command.CommandType = CommandType.Text;
command.CommandText = "SELECT COUNT(id_cliente) FROM clientes WHERE email_cliente = @email AND senha_cliente = @senha";
Veja se irá funcionar.
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br- Marcado como Resposta Carlos Messias quarta-feira, 9 de janeiro de 2013 18:18
Todas as Respostas
-
Aposto que o erro só acontece quando o login e senha estão errados!
Você faz um select por usuário com login e senha, caso o select não ache nada o executescalar não retorna um id, assim você tem um erro.
Tente executar a query no sql com os parametros para ver o que retorna. Até
-
Boa tarde não estou vendo a ligação do seu command com o abertura do banco de dados
tente isso Ex :
SqlCommand command = new SqlCommand();
command.Connection = connection; // isso está faltando no seu código
command.CommandType = CommandType.Text;
command.CommandText = "SELECT COUNT(id_cliente) FROM clientes WHERE email_cliente = @email AND senha_cliente = @senha";
Veja se irá funcionar.
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br- Marcado como Resposta Carlos Messias quarta-feira, 9 de janeiro de 2013 18:18
-
Obrigado aos dois pela resposta.
Davi, realmente funcionou dessa forma. Muito obrigado.
Me desculpe a ignorância pois estou começando a desenvolver agora. Sou iniciante e não consegui compreender o porque desse comando.
Poderia me explicar qual vai ser a função dele nesse meio?
Obrigado.
Carlos Messias.Obrigado.
-
Sim Explico:
Acontence o Seguinte imagine que você é um funcionario que irá fazer várias operações em uma empresa . A empresa seria o seu SQLConnection.
Para a empresa permitir que você entre nela ela deve está aberta :
connection.Open();
Você é o colocaborador : SQLCommand
Como você vai executar tarefas dentro da empresa você primeiro deve entrar na empresa que já está aberte lhe esperando ou seja :
command.Connection = connection
Agora sim você vai trabalhar com suas ferramentas : command.CommandType = CommandType.Text
(Aqui pode ser texto puro ou procedure : CommandType.StoredProcedure)
Então planeja suas tarefas : command.CommandText = "comando SQL"
Dái você precisa de ajuda para algumas finalidades de seu trabalho : command.Parameters.Add("parametro");
enfim você executa suas tarefas : command.ExecuteScalar();
e vê se deu certo .
Depois você vai embora = command.Dispose() e command = null
E por fim a empresa é fechamenta até outro dia(requisição) = connection.Close() - connectio.Dispose() - connection = null
Resumindo " para você rodar comando SQL precisa está ligado com servidor no caso banco que você fará suas consultas ".
Espero ter ajudado
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br -