Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mauroshikay

[Resolvido] MySqlCommand.ExecuteReader não executa um function

Recommended Posts

Olá a todos, estou fazendo aquele select em ado direto, mas para isto tive uns problemas com acentuação e regexp, para resolver criei no banco mysql uma function que remove as acentuações do campo antes de comparar com a string já sem acentuação também, acontece que quando executo direto no banco o seguinte sql:

 

select Tel_codigo, Tel_empresa, Tel_Telefone, Tel_tags, Tel_endereco, Emp_codigo, Tel_categoria, b.Cat_descricao,Tel_cep, b.Cat_descurl 
     from telefone, categoria as b 
     where (upper(sem_acento(Tel_empresa)) REGEXP '(ACOUGUE).*' OR upper(sem_acento(Tel_tags)) REGEXP '(ACOUGUE).*' )
     and b.Cat_codigo = Tel_categoria ORDER BY Tel_empresa ASC limit 0,10

Funciona normal, ele me retornar registro com ACOUGUE ou AÇOUGUE, mas se faço isto no me projeto com C# infelismente não executa, não retonar nada, ai de tanto debugar cheguei a conclusão que o DataReader ignora minha chamada a function.

Vejam abaixo todo o meu metodo:

 

List<ENTelefone> objENTel = new List<ENTelefone>();
            ConexaoMysql conexao = ConexaoMysql.GetInstance();
            MySqlConnection conn = conexao.getConexao();
            try
            {
       
                string mySelectQuery = "select 	Tel_codigo, " +
                                       "Tel_empresa, " +
                                       "Tel_Telefone, " +
                                       "Tel_tags, " +
                                       "Tel_endereco, " +
                                       "Emp_codigo, " +
                                       "Tel_categoria, " +
                                       "b.Cat_descricao," +
                                       "Tel_cep, " +
                                       "b.Cat_descurl " +
                                       "from telefone, categoria as b " +
                                       "where (upper(sem_acento(Tel_empresa)) REGEXP '(" + p_args + ").*' OR upper(sem_acento(Tel_tags)) REGEXP '(" + p_args + ").*' )" +
                                       "and b.Cat_codigo = Tel_categoria ORDER BY Tel_empresa ASC limit "+p_pagina+","+offset+" ";
               
                //cmd.CommandText = ;
                if (conn.State != ConnectionState.Open)
                    conn.Open();
                MySqlCommand cmd = new MySqlCommand(mySelectQuery,conn);
                MySqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    var tel = new ENTelefone()
                    {
                        Tel_codigo = Convert.ToInt32(reader[0].ToString()),
                        Tel_empresa = reader[1].ToString(),
                        Tel_Telefone = reader[2].ToString(),
                        Tel_tags = reader[3].ToString(),
                        Tel_endereco = reader[4].ToString(),
                        Emp_codigo = reader[5].ToString(),
                        Tel_categoria = reader[7].ToString(),
                        Tel_cep = reader[8].ToString(),
                        Cat_descurl = reader[9].ToString(),
                    };
                    objENTel.Add(tel);
             
                }
                reader.Dispose();
                conn.Close();
                return objENTel;

            }
            catch (Exception ex)
            {
                conn.Close();
                return null;
            }

Não sei mais onde posso esta errando, alguem pode ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.