Click here to Skip to main content
15,920,438 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
I have a Excel file which contains the data of Employee
My Excel contains the columns as Sr_No EMP_ID, EMP_NAME Total_Leaves, Total_Presents,
Day_1,Day_2 up to Day_31

I create a table in SQL Server using following Query

create table attendance_sample(
	Sr_No varchar,
	EMP_ID varchar(100),
	EMP_NAME varchar(100),
	Total_leaves varchar,
	total_presents varchar,
	Day_1 varchar(5), Day_2 varchar(5), Day_3 varchar(5), Day_4 varchar(5), Day_5 varchar(5), Day_6 varchar(5), Day_7 varchar(5), Day_8 varchar(5), Day_9 varchar(5), Day_10 varchar(5), 
	Day_11 varchar(5), Day_12 varchar(5), Day_13 varchar(5), Day_14 varchar(5), Day_15 varchar(5), Day_16 varchar(5), Day_17 varchar(5), Day_18 varchar(5), Day_19 varchar(5), Day_20 varchar(5),
	Day_21 varchar(5),Day_22 varchar(5),	Day_23 varchar(5),	Day_24 varchar(5),	Day_25 varchar(5),	Day_26 varchar(5),	Day_27 varchar(5),	Day_28 varchar(5),	Day_29 varchar(5),	Day_30 varchar(5),
	Day_31 varchar(5)
)



Now My Design contains file upload control only and one button to submit the excel's data to SQL server table

My code to upload data is as follows

string fname = FileUpload1.FileName.ToString();
       string fpath = "~/temp/" + fname;
       FileUpload1.SaveAs(Server.MapPath(fpath));
       con.Open();
       string qry = "insert into temp(fname,fpath) values('" + fname + "','" + fpath + "')";
       cmd = new SqlCommand(qry, con);
       cmd.ExecuteNonQuery();
       con.Close();


               try
               {
                   string path = string.Concat(Server.MapPath("~/temp/" + FileUpload1.FileName));
                   FileUpload1.SaveAs(path);

                   // Connection String to Excel Workbook
                   string excelConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 8.0", path);
                   OleDbConnection connection = new OleDbConnection();
                   connection.ConnectionString = excelConnectionString;
                   OleDbCommand command = new OleDbCommand("select * from [Sheet1$]", connection);
                   connection.Open();
                   // Create DbDataReader to Data Worksheet
                   DbDataReader dr = command.ExecuteReader();

                   // SQL Server Connection String
                   string sqlConnectionString = @"Data Source=ITBITSDT003-PC;Initial Catalog=prajakta_erp_dhanshree;Integrated Security=True";

                  // Bulk Copy to SQL Server
                   SqlBulkCopy bulkInsert = new SqlBulkCopy(sqlConnectionString);
                   bulkInsert.DestinationTableName = "attendance_sample";
                   bulkInsert.WriteToServer(dr);
                   lbl_msg.Text = "Contents Added Successfully...!";
               }
               catch(Exception ex)
               {
                   lbl_msg.Text = ex.Message;
               }

       }


This code gives me the following error
Received an invalid column length from the bcp client for colid 5.


Please help me to solve this error and thanks in advance to you all
Posted

1 solution

Need to specify length with varchar otherwise it takes 30 as default length. So just give proper lenght like varchar(Max) or varchar(1000)
 
Share this answer
 
Comments
Omkar Hendre 17-Sep-14 5:03am    
Great its works fine for me thanks
Omkar Hendre 17-Sep-14 5:03am    
Thanks a lot dear

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900