Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
Carregando comentários...