none
Erro Method not found: .ctor System.SystemException. RRS feed

  • Pergunta

  • Pessoal, na minha aplicação para pocket pc existe um menu de atividades(tarefas) que o programa realiza. As tarefas quando selecionados abrem um novo formulário e nesse formulário preenchem listboxs apartir de consultas a um banco de dados SQLServer CE. Ao sair de cada tarefa fecho a conexão com o banco e uso a função dispose() para a conexão, mas se eu tentar abrir outra tarefa logo em seguida ou até mesmo a mesma tarefa dá esse erro que coloquei no título na função prepare() da consulta para preencher os listbox.
    Alguém pode me ajudar?
    Abraços
    quinta-feira, 18 de junho de 2009 19:30

Todas as Respostas

  • Thiago,

    poderia postar trechos do código referente a manipulação da conexão com banco e das consultas ao banco?

    identifique o trecho de código que gera causa a exceção !


    att

    Miguel Faria
    sexta-feira, 19 de junho de 2009 11:22
  • O código de conexão com o banco é esse. tenho um método que faz a conexão e retorna um objeto sqlceconnection
        public static SqlCeConnection criaConexoes() 
        {
            //String que armazena a string de conexão com o banco de dados
            string stringConexao = "Data Source =" + Path.GetDirectoryName(
    					Assembly.GetExecutingAssembly().GetModules()[0].FullyQualifiedName)
            + "\\Dados\\Base_de_Dados.sdf";
    
            SqlCeConnection conexao = new SqlCeConnection(stringConexao);
    
            try
            {
                //Abre a conexão
                conexao.Open();
            }
            catch
            {
                //Caso a conexão não ocorra captura a excecão mostra mensagem e fecha
                //a conexão e o form
    
    						conexao.Dispose();
    
                conexao.Close();
    
                return null;
    
            }
            return conexao;
        }
    o erro acontece nesse código
                for( int i = 0; i < listBoxRegistro.Items.Count; i++)
                {
                    parametroPlaca.Value = listBoxRegistro.Items[i].ToString();
    
                    consultaPesos.Prepare();
    nesse último comando. apartir de uma lista de registros faço consultas no banco de dados.

    Abraços
    terça-feira, 23 de junho de 2009 18:16
  • Thiago,

    O que esta função Prepare deve fazer ?
    Algum código desta função chega a ser executado ?

    ConsultaPesos é uma classe que vc criou né ? O método Prepare() está publico nesta classe ?

    Você disse que fecha a conexão no instante que sai de uma tarefa. Você abre a conexão novamente ao executar uma nova tarefa ?


    Att. Migel Faria
    terça-feira, 23 de junho de 2009 18:39
  • Esse método Prepare() é da SqlCeCommand.
    e consultaPesos é um objeto dessa classe.
    abro a conexão sim cada vez que entro em uma tarefa.

    Abraços
    terça-feira, 23 de junho de 2009 18:46
  • Thiago,

    Ah tah.. 

    Eu nunca usei o método Prepare(). Geralmente so faço assim oh..

    SqlCeConnection conexao = new SqlCeConnection(stringConexao);
                
                conexao.Open();
                SqlCeCommand consultaPesos = new SqlCeCommand ("Select * from Pesos", conexao);
                consultaPesos.ExecuteNonQuery(); // Executa o comando
                conexao.Close();
    
                conexao.Open();
                consultaPesos.CommandText = "Select * from Clientes";
                consultaPesos.ExecuteNonQuery(); // Executa o comando
                conexao.Close();
    
                conexao.Open();
                SqlCeDataAdapter da_Pesos = new SqlCeDataAdapter("select * from pesos", conexao); //cria executa um data adapter
                System.Data.DataSet ds_Pesos = new System.Data.DataSet(); // criar um data set
    
                da_Pesos.Fill(ds_Pesos); // carrega o dataset com resultado do data atapter
                conexao.Close();



    Experimente fazer desta forma, sem usar o prepare(). Pode dar certo


    Att. Migel Faria
    • Editado Miguel_Faria terça-feira, 23 de junho de 2009 20:01
    terça-feira, 23 de junho de 2009 20:00