none
ASP.net C# e Mysql RRS feed

  • Pergunta

  • Olá pessoal tô passando um perrenho com o mysql e asp.net c# para uma pagina de login.

    Se puderem me ajudar eu agradeço.

    Segue a classe que criei pagina classeLogin.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using MySql.Data.MySqlClient;
    
    /// <summary>
    /// Summary description for ClasseLogin
    /// </summary>
    public class ClasseLogin
    {
    
        private string strCon;
    
    	public ClasseLogin()
    	{
            string host = "mysql01.meuhost.hospedagemdesites.ws";
            string user = "meuuser";
            string pass = "minhasenha";
            string banco = "meubanco";
    
            strCon = "server=" + host + "; user id=" + user + "; password=" + pass + "; database=" + banco + ";";
        }
    
        public bool fazerLogin(string login, string senha)
        {
            bool encontrou = false;
            MySqlConnection conn = new MySqlConnection(strCon);
            string sql = "SELECT * FROM login WHERE login=@login AND senha=@senha";
            MySqlDataAdapter adapatador = new MySqlDataAdapter(sql, conn);
            DataTable tabUsuario = new DataTable();
    
            adapatador.SelectCommand.Parameters.Add("@login", MySqlDbType.String, 50);
            adapatador.SelectCommand.Parameters["@login"].Value = login;
    
            adapatador.SelectCommand.Parameters.Add("@senha", MySqlDbType.String, 50);
            adapatador.SelectCommand.Parameters["@senha"].Value = senha;
    
            try
            {
                conn.Open();
                adapatador.Fill(tabUsuario);
                if (tabUsuario.Rows.Count > 0)
                {
                    encontrou = true;
                }
            }
            catch (Exception e)
            {
                string erro = e.Message;
            }
            finally
            {
                conn.Close();
            }
    
            return encontrou;
        }
    }

    E agora a página de default.aspx.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    public partial class admin_Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
        protected void ButtonLogin_Click(object sender, EventArgs e)
        {
            ClasseLogin ObjLogin = new ClasseLogin();
            bool retorno = ObjLogin.fazerLogin(TextBoxLogin.Text, TextBoxSenha.Text);
    
            if (retorno == true)
            {
                Session["login"] = TextBoxLogin.Text;
                Response.Redirect("Servico.aspx");
            }
            else
            {
                LabelMensagemLogin.Text = "Usuário não encontrado";
            }
        }
    }

    Não consigo de jeito nenhum que ele autentique, da sempre Usuario não encontrado e o usuario existe no banco de dados.

    POderiam me ajudar a encontrar o erro.

    Agradeço desde já

    segunda-feira, 3 de setembro de 2012 10:06

Todas as Respostas

  • Se você executa esta mesma query no banco retorna resultados?

    Eu não usaria um dataTable para buscar apenas o login do usuário, você pode melhorar a performance desta rotina substituindo por um "Select ID from usuarios...." e utilize o execute scalar.

    segunda-feira, 3 de setembro de 2012 11:20
  • Sim. Localmente, ele funciona, pois instalei todos os aplicativos mysql necessários em meu micro. Mais na locaweb, eu apenas coloquei as "dll's" na pasta "bin" mysql.data.dll, mysql.data.entity.dll, mysql.visualstudio.dll e a mysql.web.dll

    Já não sei mais o que fazer, pois encontro muito pouco tutorial sobre mysql e asp.net co c#

    segunda-feira, 3 de setembro de 2012 11:43
  • Rapidifre, fica bem difícil saber assim. vamos lá, existem outras Query's no seu projeto? teste elas. verifique se retorna dados. como você está publicando seu site? tente publicar utilizando File System.

    Se a resposta foi útil por favor qualifique. Italo Biguzi Duarte, Desenvolvedor ASP.NET C# Email : Italo.biguzzi@gmail.com

    segunda-feira, 3 de setembro de 2012 11:56
  • Compreendo. Inicialmente, eu achei que era erro no código ou algo parecido. Mais como funcionou localmente, então o B.O. e na locaweb vou ver se consigo resolver com eles valew e obrigado
    segunda-feira, 3 de setembro de 2012 12:20
  • Faça uma query simples na aplicação e veja se ela retorna resultados.
    segunda-feira, 3 de setembro de 2012 12:23
  • vc tem essa base com seus usuários na localweb, acho que n é erro na app senão vc iria receber um exception

    Não esqueça de usar o componente </> na barra para posta seu código. Microsoft MCPD,MCTS,MCC

    segunda-feira, 3 de setembro de 2012 13:36
    Moderador
  • Olá,

    eu gosto de usar uma classe separada para login(classe conect) e funciona blzinha.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    /// <summary>
    /// Summary description for conect
    /// </summary>
    public class conect
    {
        public static string StringDeConexao
        {
            get
            {
                return "server=meuhost;database=meudb;user id=usuario;pwd=minhasenha";
            }
        }
    }

    e no método login você pode chamar da seguinte forma

    public bool fazerLogin(string login, string senha)
        {
            bool encontrou = false;
            MySqlConnection conn = new MySqlConnection(conect.StringDeConexao);
            string sql = "SELECT * FROM login WHERE login=@login AND senha=@senha";
            MySqlDataAdapter adapatador = new MySqlDataAdapter(sql, conn);
            DataTable tabUsuario = new DataTable();
    
            adapatador.SelectCommand.Parameters.Add("@login", MySqlDbType.String, 50);
            adapatador.SelectCommand.Parameters["@login"].Value = login;
    
            adapatador.SelectCommand.Parameters.Add("@senha", MySqlDbType.String, 50);
            adapatador.SelectCommand.Parameters["@senha"].Value = senha;
    
            try
            {
                conn.Open();
                adapatador.Fill(tabUsuario);
                if (tabUsuario.Rows.Count > 0)
                {
                    encontrou = true;
                }
            }
            catch (Exception e)
            {
                string erro = e.Message;
            }
            finally
            {
                conn.Close();
            }
    
            return encontrou;
        }
    }
    verifique tambem se o nome da sua base de dados, ou a descrição do host para acesso ao db está correto.

    quarta-feira, 12 de setembro de 2012 00:24