Ir para conteúdo

Arquivado

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

Almir Julio Grizante

erro classe

Recommended Posts

consegui implantar o codigo e executar o programa , mas ao solicitar a geração do relatorio ele deu erro e apontou para essa linha (throw ex) da minha classe (acesso) com o seguinte erro:

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '00:00:00 and month(nascto) >=01/03/2000 00:00:00 and day(nascto) <= 01/03/2000 0' at line 1

 

 

 

 

 

catch (Exception ex)   
{



throw ex;   
}

 

o código completo da minha classe é esse:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;

namespace GerenciamentoEleitores
{
 public class Acesso
   {
       public static string getCaminho()
       {
           string caminhoArquivo = "Persist Security Info=False;server=localhost;database=bdgerpol;uid=root;server=localhost;database=bdgerpol;uid=root;pwd=2525";
           if (caminhoArquivo.IndexOf("\\bin\\Debug") != -1)
           {
               caminhoArquivo = caminhoArquivo.Replace("\\bin\\Debug", "");
           }
           else if (caminhoArquivo.IndexOf("\\bin\\Release") != -1)
           {
               caminhoArquivo = caminhoArquivo.Replace("\\bin\\Release", "");
           }
           return caminhoArquivo;
       }//fim getcaminho
       public static MySqlConnection GetConnection()
       {
           string caminhoBD = getCaminho();
     //      caminhoBD = caminhoBD + "\\Dados\\financas.mdb";
           string strConexao = "Persist Security Info=False;server=localhost;database=bdgerpol;uid=root;server=localhost;database=bdgerpol;uid=root;pwd=2525";
           //Retorna uma conexão.
           return new MySqlConnection(strConexao);
       }//fim getconnection  

       // getDataReader - abre a conexão e executa um comando contendo uma instrução SQL
       // e retorna um datareader

       public static MySqlDataReader getDataReader(string sql, MySqlConnection con)
       {
           MySqlDataReader dr = null;

           try
           {
               con.Open();
               MySqlCommand cmd = new MySqlCommand(sql, con);
               dr = cmd.ExecuteReader();
               return dr;
           }
           catch (Exception ex)
           {
               throw ex;
           }
       }


   }
}

 

 



 

 

 

o codigo que implementei 

     DateTime dataInicial;
           DateTime dataFinal;
           CultureInfo ptBR = new CultureInfo("pt-BR");


           if (DateTime.TryParseExact(mtbDataInicial.Text + @"/2000", "dd/MM/yyyy", ptBR, DateTimeStyles.None, out dataInicial))
           {
               int diaInicial = dataInicial.Day;
               int mesInicial = dataInicial.Month;
           }
           else
           {
               MessageBox.Show("Data Invalida !! ", "Mensagem");

           }

           if (DateTime.TryParseExact(mtbDataFinal.Text + @"/2000", "dd/MM/yyyy", ptBR, DateTimeStyles.None, out dataFinal))
           {
               int diaFinal = dataInicial.Day;
               int mesFinal = dataInicial.Month;
           }
           else
           {
               MessageBox.Show("Data Invalida !! ", "Mensagem");

           }

           sql = "SELECT eleitor, nascto, telefone,regiao FROM tbeleitor WHERE " +
             " day(nascto) >= " + dataInicial +
                       " and month(nascto) >=" + dataInicial +
                       " and day(nascto) <= " + dataInicial +
                       " and month(nascto) <=" + dataInicial; 


           connPrint = Acesso.GetConnection();
           drDados = Acesso.getDataReader(sql, connPrint);
           paginaAtual = 1;
       }

Compartilhar este post


Link para o post
Compartilhar em outros sites

poderia me ensinar como faço isso ?

Almir, estude esses links para debugar o código, com isso conseguirá o resultado de variáveis:

http://www.beansoftware.com/ASP.NET-Tutorials/Debuging-Breakpoints.aspx

http://homeandlearn.co.uk/NET/nets5p6.html

http://msdn.microsoft.com/en-us/library/4607yxb0.aspx

 

esse somente se estiver utilizando o IIS em ambiente de desenvolvimento:

http://www.codeproject.com/KB/aspnet/ProcessAttache.aspx

 

verificando o seu código, a principio, parece que esta faltando as aspas simples (') entre os filtros, mas pode ser que tenha mais a ajustar, exemplo:

   sql = "SELECT eleitor, nascto, telefone,regiao FROM tbeleitor WHERE " +
             " day(nascto) >= '" + dataInicial + "'" +
                       " and month(nascto) >= '" + dataInicial + "'" +
                       " and day(nascto) <= '" + dataInicial  + "'"+
                       " and month(nascto) <= '" + dataInicial + "'";

prefira não usar concatenação de strings em sql, isso pode facilitar muito o sql injection, estude tb. esses artigos:

http://www.macoratti.net/aspn_lad1.htm

http://srcware.com/programacao/como-evitar-sql-injection-em-net/

http://www.devmedia.com.br/post-17545-Prevenindo-SQL-Injection--ASP-NET.html

http://www.mhavila.com.br/topicos/bd/sqlbind.html

 

boa sorte e bons estudos!

abs

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.