none
erro de connection string RRS feed

  • Pergunta

  • Bom dia,

    Criei uma tela windowsform para importar um arquivo de texto e exibir o conteúdo em uma gridview. o problema é que, quando eu seleciono o arquivo para abrir, recebo uma mensagem de erro na inicialização da connectionstring.

    o que eu configurei errado no código?

    Muito obrigado.

    private void btnSelecionarArquivo_Click(object sender, EventArgs e)
            {
                OpenFileDialog vAbreArq = new OpenFileDialog();
                vAbreArq.Filter =
                "Arquivo de Texto (*.txt)|*.txt";
                vAbreArq.RestoreDirectory = true;
                vAbreArq.Title = "Selecione o Arquivo";
                vAbreArq.DefaultExt =
                 "Arquivo de Texto (*.txt)|*.txt";
                if (vAbreArq.ShowDialog() == DialogResult.OK)
                {
                    TBxCaminhoEArquivo.Text = vAbreArq.FileName;
                    DataSet ds = new DataSet();
                    string diretorio = System.IO.Path.GetDirectoryName(vAbreArq.FileName);
                    OleDbConnection conexao = new OleDbConnection(string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Text;HDR=NO;FMT=Delimited\"", diretorio));
                    using (conexao) ;
    
                    try
                    {
                        string teste = System.IO.Path.GetFileName(vAbreArq.FileName);
                        OleDbDataAdapter da = new OleDbDataAdapter("Select * From " + teste, conexao);
                        this.Cursor = Cursors.WaitCursor;
                        da.Fill(ds);
                        DGVParceirosImportados.DataSource = ds.Tables[0];
                        DGVParceirosImportados.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.DisplayedCellsExceptHeader;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Erro ao acessar os dados: " + ex.Message);
                    }
                    finally
                    {
                        conexao.Close();
                        this.Cursor = Cursors.Default;
                    }
                    BtnImportarWebshare.Enabled = true;
                    LblQuantidadeLinhas.Text = DGVParceirosImportados.RowCount.ToString();
                }
    
            }

    terça-feira, 12 de março de 2013 14:24

Respostas

Todas as Respostas

  • Amigo, remova a linha 
    using (conexao) ;


    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Facebook Olavo Neto
    Linkedin Olavo Neto
    Se for útil marque como resposta e faça um Developer feliz :)

    terça-feira, 12 de março de 2013 15:38
  • Cara,

    Precisa entender o conceito de using antes de aplica-lo ao seu código:

    http://www.devmedia.com.br/entendendo-o-bloco-using-no-c/16967

    http://www.codeproject.com/Articles/6564/Understanding-the-using-statement-in-C

    Quando você fez :

    using (conexao) ;

    Você encerrou a sua conexão a partir das próximas linhas do código. Quer utilizar o using então faça isso:

    using(OleDbConnection conexao = new OleDbConnection(string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Text;HDR=NO;FMT=Delimited\"", diretorio)))
    {
    
                    try
                    {
                        string teste = System.IO.Path.GetFileName(vAbreArq.FileName);
                        OleDbDataAdapter da = new OleDbDataAdapter("Select * From " + teste, conexao);
                        this.Cursor = Cursors.WaitCursor;
                        da.Fill(ds);
                        DGVParceirosImportados.DataSource = ds.Tables[0];
                        DGVParceirosImportados.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.DisplayedCellsExceptHeader;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Erro ao acessar os dados: " + ex.Message);
                    }
                    finally
                    {
                        conexao.Close();
                        this.Cursor = Cursors.Default;
                    }
                    BtnImportarWebshare.Enabled = true;
                    LblQuantidadeLinhas.Text = DGVParceirosImportados.RowCount.ToString();
    }


    Atenciosamente, Samuel dos Anjos

    terça-feira, 12 de março de 2013 17:11
  • Eu retirei o using.

    o estranho é quando chega na execuçao da linha

    da.Fill(ds);

    dá erro de sintaxe na clausula from...

    terça-feira, 12 de março de 2013 17:35
  • Cola o erro aqui por favor

    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Facebook Olavo Neto
    Linkedin Olavo Neto
    Se for útil marque como resposta e faça um Developer feliz :)

    terça-feira, 12 de março de 2013 17:41
  • o erro que dá é:

    "Erro ao acessar os dados: Erro de sintaxe na cláusula FROM."

    a primeira parte é o texto que coloquei no catch, mas a segunda é o erro que o programa dá.

    terça-feira, 12 de março de 2013 17:46
  • Cara,

    Posta o que ele gera completo quando chega nessa linha:

    "Select * From " + teste

    Coloca o conteúdo da variável "teste" aqui.


    Atenciosamente, Samuel dos Anjos

    terça-feira, 12 de março de 2013 18:01
  • é o nome do arquivo que quero importar:

    "TXT DE ITENS OU MAIS.TXT"

    inclusive tentei colocar "_" entre os espaços das palavras do nome do arquivo, mas dá o mesmo erro.
    • Editado joaoluizbt terça-feira, 12 de março de 2013 18:38
    • Marcado como Resposta joaoluizbt terça-feira, 12 de março de 2013 18:43
    • Não Marcado como Resposta joaoluizbt terça-feira, 12 de março de 2013 18:43
    terça-feira, 12 de março de 2013 18:37
  • li em um lugar na internet, que o caminho do arquivo não pode conter pontos, senão ele dá erro... eu coloquei o arquivo no c: e ele conseguiu ler... mas só pegou a primeria coluna. o texto é separado por ponto e vírgula.

    quando eu coloco "Delimited" no extended properties, ele não reconhece a separação?

    • Marcado como Resposta joaoluizbt terça-feira, 12 de março de 2013 18:48
    terça-feira, 12 de março de 2013 18:42