Bulkcopy는 C # 응용 프로그램을 사용하여 SQL에 데이터를 엑셀

c# excel sqlbulkcopy

문제

데이터를 SQL로 대량 복사하려고하지만 데이터가 복사되지 않아 프로그램에서 오류가 발생합니다. 내가 잘못하고있는 것을 지적하도록 도와주세요.

여기 내 코드의 발췌 문장입니다.

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();

        }

수락 된 답변

완전한 예제가 SqlBulkCopy 도움말 페이지에 있습니다.

이에 따라 sqlconn.close () 라인과 루프 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();

    }


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.