none
OracleBulkCopy RRS feed

  • Pergunta

  • Estou criando uma tela simples para importar planilhar excel para banco de dados oracle.

    ao executar esta dando a seguinte mensagem:

    The provider is not compatible with the version of Oracle client

    Linha 41: OracleBulkCopy bulkInsert = new OracleBulkCopy(con_str); Linha 42: bulkInsert.DestinationTableName = "impteste"; Linha 43: bulkInsert.WriteToServer(dr);

    Uso Visual Studio 2012, Banco de dados Oracle 11g, e oracle client da minha maquina é o 10g.

    Segue codigo:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Data.OracleClient;
    using System.Data.OleDb;
    using System.Data.Common;
    using System.IO;
    using System.Drawing;
    using System.Data.Odbc;
    using Oracle.DataAccess.Client;
    
    
    namespace gsfti.testes
    {
        public partial class ImportExcel : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
    
            }
    
            protected void Button1_Click(object sender, EventArgs e)
            {
                if (FileUpload1.HasFile)
                {
                    string path = string.Concat((Server.MapPath("~/temp/" + FileUpload1.FileName)));
                    FileUpload1.PostedFile.SaveAs(path);
                    OleDbConnection OleDbcon = new OleDbConnection("Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;");
                    OleDbCommand cmd = new OleDbCommand("select * from [plan1$]", OleDbcon);
                    OleDbDataAdapter objAdapter1 = new OleDbDataAdapter(cmd);
    
                    OleDbcon.Open();
                    DbDataReader dr = cmd.ExecuteReader();
                    string con_str = "Data Source=bd;Persist Security Info=True;User ID=user;Password=user;Unicode=True";
    
                    /////////
                    OracleBulkCopy bulkInsert = new OracleBulkCopy(con_str);
                    bulkInsert.DestinationTableName = "impteste";
                    bulkInsert.WriteToServer(dr);
                    OleDbcon.Close();
                    Array.ForEach(Directory.GetFiles((Server.MapPath("~/temp/"))), File.Delete);
                    Label1.ForeColor = Color.Green;
                    Label1.Text = "Sucesso";
                }
                else
                {
                    Label1.ForeColor = Color.Red;
                    Label1.Text = "inserir arquivo";
                }
            }
        }
    }

    sexta-feira, 22 de maio de 2015 20:27

Respostas

  • Eder,

    Sua string de conexão com o banco oracle está incorreta.

    Dá uma olhada nessas referências e veja qual corresponde melhor à sua situação.

    Teste e poste seus resultados.

    Abraços !


    Diego Murakami View Diego Murakami's LinkedIn profile - MCP, MS, MCSD
    * Por favor "Marcar como Resposta" caso esta for útil para sua dúvida.

    • Marcado como Resposta Marcos SJ sexta-feira, 15 de janeiro de 2016 17:12
    quarta-feira, 17 de junho de 2015 16:11

Todas as Respostas

  • Eder, boa tarde.

    1. Baixe novamente o driver Oracle.

    2. Remova as referências do driver no projeto e as adicione novamente (as DLLs).

    Teste e poste seus resultados.

    Abraços !


    Diego Murakami View Diego Murakami's LinkedIn profile - MCP, MS, MCSD
    * Por favor "Marcar como Resposta" caso esta for útil para sua dúvida.

    segunda-feira, 25 de maio de 2015 16:53
  • Bom dia...reinstalei os driver...Instalei o pacote ODTwithODAC121021.

    Porem ao executar o projeto apresenta o erro 

    'Unicode' é um atributo de string de conexão inválido

    segue codigo

    protected void btnupload_Click(object sender, EventArgs e)
            {
                if (FileUpload1.HasFile)
                {
                    string path = string.Concat((Server.MapPath("~/temp/" + FileUpload1.FileName)));
                    FileUpload1.PostedFile.SaveAs(path);
                    OleDbConnection OleDbcon = new OleDbConnection("Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;");
                    OleDbCommand cmd = new OleDbCommand("select * from [Plan1$]", OleDbcon);
                    OleDbDataAdapter objAdapter1 = new OleDbDataAdapter(cmd);
                    OleDbcon.Open();
                    DbDataReader dr = cmd.ExecuteReader();
                                    
                    
                    string con_str = "Data Source=santafe;Persist Security Info=True;User ID=nbs;Password=oldnew;Unicode=True";
                    OracleBulkCopy bulkCopy = new OracleBulkCopy(con_str);
                    bulkCopy.DestinationTableName = "impteste";
                    bulkCopy.WriteToServer(dr);
                    OleDbcon.Close();
                    Array.ForEach(Directory.GetFiles((Server.MapPath("~/temp/"))), File.Delete);
                    
                    Label1.Text = "Sucesso";
                }
                else
                {
                    Label1.ForeColor = Color.Red;
                    Label1.Text = "inserir arquivo";
                }
            }

    quarta-feira, 17 de junho de 2015 14:22
  • Eder,

    Sua string de conexão com o banco oracle está incorreta.

    Dá uma olhada nessas referências e veja qual corresponde melhor à sua situação.

    Teste e poste seus resultados.

    Abraços !


    Diego Murakami View Diego Murakami's LinkedIn profile - MCP, MS, MCSD
    * Por favor "Marcar como Resposta" caso esta for útil para sua dúvida.

    • Marcado como Resposta Marcos SJ sexta-feira, 15 de janeiro de 2016 17:12
    quarta-feira, 17 de junho de 2015 16:11