Bulkcopy excel i dati in sql usando l'applicazione c #

c# excel sqlbulkcopy

Domanda

Sto cercando di eseguire il bulk dei dati excel in SQL ma i dati non vengono copiati né il programma lancia un errore. Aiutami a sottolineare cosa sto facendo male.

Ecco uno snippet del mio codice

OpenFileDialog openFileDialog = new OpenFileDialog();

        openFileDialog.Filter = "Excel Files|*.xls;*.xlsx";

        openFileDialog.ShowDialog();

        if (!string.IsNullOrEmpty(openFileDialog.FileName))

        {
           string ssqltable = "Student";
           string myexceldataquery = "select Name,DOB,Email from [Sheet1$]";
           try
        {
                //Excel connection string
            string Econn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + openFileDialog.FileName + ";Extended Properties=Excel 12.0;";
                //Sql connection string
            string Sconn = "Data Source=.;Initial Catalog=db_Test;Integrated Security=True";
            SqlConnection sqlconn = new SqlConnection(Sconn);
            sqlconn.Open();
            sqlconn.Close();
            OleDbConnection oledbconn = new OleDbConnection(Econn);
            OleDbCommand oledbcmd = new OleDbCommand(myexceldataquery, oledbconn);
            oledbconn.Open();
            OleDbDataReader dr = oledbcmd.ExecuteReader();
            SqlBulkCopy bulkcopy = new SqlBulkCopy(Sconn);
            bulkcopy.DestinationTableName = ssqltable;
            while (dr.Read())
            {
                bulkcopy.WriteToServer(dr);
            }
            dr.Close();
            oledbconn.Close();

        }

Risposta accettata

Hai un esempio completo nella pagina di aiuto di SqlBulkCopy

In base a ciò, ho rimosso la riga sqlconn.close () e il ciclo while (dr.Read())

    OpenFileDialog openFileDialog = new OpenFileDialog();
    openFileDialog.Filter = "Excel Files|*.xls;*.xlsx";
    openFileDialog.ShowDialog();

    if (!string.IsNullOrEmpty(openFileDialog.FileName))
    {
       string ssqltable = "Student";
       string myexceldataquery = "select Name,DOB,Email from [Sheet1$]";
       try
       {
            //Excel connection string
        string Econn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + openFileDialog.FileName + ";Extended Properties=Excel 12.0;";
            //Sql connection string
        string Sconn = "Data Source=.;Initial Catalog=db_Test;Integrated Security=True";
        using (SqlConnection sqlconn = new SqlConnection(Sconn))
        {
            sqlconn.Open();
            //sqlconn.Close();
            OleDbConnection oledbconn = new OleDbConnection(Econn);
            OleDbCommand oledbcmd = new OleDbCommand(myexceldataquery, oledbconn);
            oledbconn.Open();
            OleDbDataReader dr = oledbcmd.ExecuteReader();
            SqlBulkCopy bulkcopy = new SqlBulkCopy(Sconn);
            bulkcopy.DestinationTableName = ssqltable;

            bulkcopy.WriteToServer(dr);

         }
    }
    finally 
    {
        dr.Close();
        oledbconn.Close();

    }


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché