Usuário com melhor resposta
OracleBulkCopy

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"; } } } }
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
- 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
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
- MCP, MS, MCSD
* Por favor "Marcar como Resposta" caso esta for útil para sua dúvida.- Sugerido como Resposta Matheus L. M. C. Campos terça-feira, 26 de maio de 2015 19:20
-
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"; } }
-
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
- 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