Jump to content
Querendo_ser_Nerd

Importar e gravar BD com C#

Recommended Posts

Bom dia , 

 

Pessoal, realizei diversas pesquisas em Fórum e Artigos, meu caso seria, criei uma aplicação na qual realiza a importação de arquivo em XLS em um DataGridView , está carregando a informação a principio em uma coluna (Duvida as colunas no Excel algumas contem sinais e espaço como "Cód. Cliente" como faço select * from [plan1$] para retornar apenas pela posição da coluna ex. select [A1] from [plan1$] ) , certo , carreguei no DataGrid, creei um botão para carregar as informações do data grid para o BD Oracle, passei toda a configuração conexão e realizei o INSERT , mas não popula com as informações do grid na tabela, apenas quando no INSERT ...Values (1) por exemplo o mesmo inseri o valor na tabela no banco. Já realizei a depuração mas não consigo. Sou novo nessa linguagem. Obg pela Ajuda.

 

using System;
using System.Data;
using System.Data.OleDb; // intregração Excel
using System.Data.OracleClient;
using System.Windows.Forms;


namespace WindowsFormsLog
{

    public partial class Form4 : Form
    {
        
        public Form4()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            if(openFileDialog.ShowDialog()== System.Windows.Forms.DialogResult.OK)
            {
                this.textBox1.Text = openFileDialog.FileName;
            }
        }

       

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
           
        }

        public void button2_Click_1(object sender, EventArgs e)
        { 
            string PathCpnn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + textBox1.Text + ";Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1';";
            OleDbConnection conn = new OleDbConnection(PathCpnn);

            //LINQ c#
             OleDbDataAdapter myDbDataAdapter = new OleDbDataAdapter("Select *  from [Plan1$]", conn); // planilha deve conter o nome Plan1

            DataTable dt = new DataTable(); // armazena dado 
              myDbDataAdapter.Fill(dt);

              dataGridView1.DataSource = dt;
            dataGridView1.Columns[0].HeaderText = "NROPEDCLIENTE"; //alterando nome das colunas 
            //  dataGridView1.Columns[1].HeaderText = "DTAINCLUSAO";
        

        }

   
        private void Form4_Load(object sender, EventArgs e)
        {

        }

        public void button3_Click(object sender, EventArgs e)
        {
            string OracleConn = @"Data Source = ok; User ID =ok ; Password = ok; Unicode = True";
            OracleConnection conexao = new OracleConnection(OracleConn);
            
            try
            {
              
                if (dataGridView1.Rows.Count > 1)
                {

                    for (int i = 1; i <= dataGridView1.Rows.Count ; i++)//-1
                    {
                        int dataGridView1 = Convert.ToInt32(this.dataGridView1.Rows[i].Cells[0].Value);


                        conexao.Open();
                        OracleCommand comando = new OracleCommand ("insert into pedido values(@NROPEDCLIENTE)", conexao);
   

                       comando.Parameters.AddWithValue("NROPEDCLIENTE", dataGridView1);
                   
                        comando.ExecuteNonQuery();
                        MessageBox.Show("Insert");
                        conexao.Close();
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Erro ao inserir"); // Sempre finaliza aqui depuração
            }
            


        }

      
        }
    }


    

Share this post


Link to post
Share on other sites

Tira o TRAY pra ter certeza de onde esta ocorrendo o erro.

 

Ou coloca Console.WriteLine("texto");

entre os comandos pra ver até onde ele vai

 

falo isto porque o problema pode ser outro e ta procurando no lugar errado

 

outra opção é colocar o tray só no 

comando.ExecuteNonQuery();

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By johnklo
      COM BASE NA TABELA HR DO ORACLE
      Preciso criar uma sub-rotina (procedure) que imprima na tela o número de funcionários (employees) agrupados por departamentos (department_id). Deve-se ordenar a saída em ordem decrescente pela quantidade de departamentos. Pode-se utilizar qualquer forma de cursor para imprimir o resultado.
    • By EREGON
      Olá,
      ao chamar a função, estou a receber o erro:
       
      "ORA-01422: extracção exacta devolve mais que o número pedido de linhas"
       
      create or replace FUNCTION "CALC_ADDT_SIM_DISC" (ACCT_INPUT VARCHAR2) RETURN VARCHAR2 IS SIM_MSISDN VARCHAR2(20); BEGIN SELECT CASE WHEN ADDT_DISC_1 = 1 THEN mu.MSISDN WHEN ADDT_DISC_1 > 1 THEN (SELECT DISTINCT t02.MSISDN FROM CDM.DMKV_TRANSP_VAR_RESULT_02 t02 WHERE SERV_ACCT_OLDER_MSISDN_FLG = 'Y' AND PRICING_PLAN_TYPE IN ('valor1', 'valor2') AND t02.DW_SERV_ST_ID='100000003' AND t02.CUST_ACCT_EXT_KEY = ACCT_INPUT ) END MSISDN_ADDT_DISC INTO SIM_MSISDN FROM( SELECT DISTINCT CUST_ACCT_EXT_KEY, COUNT(CUST_ACCT_EXT_KEY) AS ADDT_DISC_1 FROM MOBILE_UPSELL WHERE FLAG_ADDITIONAL_SIM_DISCOUNT = '0' GROUP BY CUST_ACCT_EXT_KEY )t, MOBILE_UPSELL mu WHERE t.CUST_ACCT_EXT_KEY = mu.CUST_ACCT_EXT_KEY AND t.CUST_ACCT_EXT_KEY = ACCT_INPUT; RETURN SIM_MSISDN; END; O que estou a fazer de errado?
       
      Obrigado
    • By emerod
      Boa tarde!
       
      Estou montando uma rotina de backup para um banco de dados oracle, com o seguinte comando:
       
      expdp compiere/compiere@COMPIERE directory=compierebkp schemas=compiere dumpfile=ExpDat.dmp NOLOGFILE=Y
       
      Porém está retornando estes erros:
       
      Conectado a: Oracle Database 11g Release 11.2.0.4.0 - 64bit Production
      ORA-39001: valor de argumento invßlido
      ORA-39000: especificaþÒo de arquivo de dump incorreto
      ORA-31641: nÒo Ú possÝvel criar o arquivo de dump "c:\compiere2\data/ExpDat.dmp"
      ORA-27040: erro ao criar arquivo, nÒo foi possÝvel criar o arquivo
      Linux-x86_64 Error: 2: No such file or directory
      Additional information: 1
       
      O banco está instalado em uma maquina linux e eu estou montando o backup em uma maquina linux.
       
      Segue a tela com o detalhamento do erro:

       
      Alguém pode me ajudar?
       
      Obrigado
       
      Emerson Ricardo Rodrigues
       
       
    • By sadamkim
      Pessoal,  me deparei com um problema.
      Tenho uma Tabela, onde fica armazenada as transações dos clientes.
      Cada transação tem vários registros com o campo STATUS.
       
      Preciso fazer um MAX, para pegar a ultima transação por data, e assim saber qual foi o status da mesma.
      Mas ao utilizar o MAX e selecionar o campo STATUS ele me traz todos os registro, porque o mesmo não pode agrupar por status, por conter valores diferentes.
      É possível criar alguma forma de selecionar no meu caso a ultima transação por data (MAX) e trazer o campo status?
      Seja com alguma procedure, ou outra função do ORACLE.


    • By Jonatas Provido
      Pessoal veja se consegue me ajudar 
      Hoje tenho uma  TABELA1 e TABELA2
      Tabela =  TABELA1
      Colunas = NCM
                         IPOS_FEDER
                         IPOS_MUNIC
                         IPOS_GLOBAL
                         IPOS_ESTAD
      A Tabela2 onde esta com as informações novas que precisa ser atualizado a Tabela1
      TABELA = TABELA2
      COLUNAS = NCM
                            FEDERAL
                            MUNICIP
                            GLOBAL
                            ESTADU
                       
      Preciso que compare o coluna NCM as demais coluna se diferente valor tabela 2 atualiza a tabela1 
       
      já li vários post porem acho que a forma que estou pesquisando não seja coerente. 
      Obrigado! pela atenção

       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.