sql bulk copy from data table will not upload

asp.net c# sql sqlbulkcopy

Question

Hello I have the code below that for some reason is not working:

I use oledb to fill a dataset from a pipe delimited file that is uploaded through a fileupload control on an asp.net web application. I then take the data table and then use sql bulk copy to copy the data to a table i have setup in sql.

protected void btnUpload_Click(object sender, EventArgs e)
{
    string filepath = fileUpload1.PostedFile.FileName;
    PerformBulkCopy(GencoUpload(filepath));
}

public static DataTable GencoUpload(string path)
{
    string full = Path.GetFullPath(path);
    string file = Path.GetFileName(full);
    string dir = Path.GetDirectoryName(full);

    string connString = "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=\"" + dir +
    "\\\";" + "Extended Properties=\"text;HDR=Yes;Format=Delimited(|)\";";

    string query = "SELECT * FROM " + file;

    DataTable dt = new DataTable();

    OleDbDataAdapter dAdapter = new OleDbDataAdapter(query, connString);

    try
    {
        dAdapter.Fill(dt);
    }
    catch
    {
        // catch code
    }

    dAdapter.Dispose();
    return dt;
}

private void PerformBulkCopy(DataTable GencoInfo)
{
    string conStr = ConfigurationManager.ConnectionStrings["EDI"].ConnectionString;

    using (SqlBulkCopy bulkcopy = new SqlBulkCopy(conStr))
    {
        bulkcopy.DestinationTableName = "dbo.GencoUploadTempTable";
        bulkcopy.WriteToServer(GencoInfo);
    }
}

Can someone help me with why this isnt loading into my sql database? Thank you.

Accepted Answer

This should do the work...............

       public static DataTable columnNamessheet1(String excelFile)
    {
        string connString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelFile + ";Extended Properties='Excel 12.0;HDR=yes'";
        string connectionstring ="Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DebitCare;Data Source=SSDEV7-HP\\SQLEXPRESS";

        using (OleDbConnection conn = new OleDbConnection(connString))
        {
            SqlConnection SqlConn1 = new SqlConnection(connectionstring);
            SqlConn1.Open();
            OleDbCommand odc = new OleDbCommand(string.Format("Select LoanNumber,CustomerName,DateofBirth,MobileNo,SanctionDate,EmployerName FROM [BAJAJ DUMP$]"), conn);
            conn.Open();
            OleDbDataReader reader = odc.ExecuteReader();               
            DataTable sheetSchema = reader.GetSchemaTable();
            SqlBulkCopy sqlbulk = new SqlBulkCopy(SqlConn1);
            sqlbulk.DestinationTableName = "CUSTOMER_DETAILS";
            sqlbulk.ColumnMappings.Add("LoanNumber", "CUSTOMER_LOAN_NO");
            sqlbulk.ColumnMappings.Add("CustomerName", "CUSTOMER_ NAME");
            sqlbulk.ColumnMappings.Add("DateofBirth", "CUSTOMER_DOB");
            sqlbulk.ColumnMappings.Add("MobileNo", "CUSTOMER_MOBILE NUMBER");
            sqlbulk.ColumnMappings.Add("SanctionDate", "CUSTOMER_SANCTION DATE");
            sqlbulk.ColumnMappings.Add("EmployerName", "CUSTOMER_COMPANY NAME");
            sqlbulk.WriteToServer(reader);
            conn.Close();
            return sheetSchema;            

        }
    }

Popular Answer

try this and put a breakpoint in a catch:

string connString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;DataSource={0};Extended Properties=\"text;HDR=Yes;Format=Delimited(|)\";", dir);

try
{
    dAdapter.Fill(dt);
}
catch (Exception exc)
{
    string myErrorMsg = exc.Message;
}



Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Is this KB legal? Yes, learn why
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Is this KB legal? Yes, learn why