Excel到DataTable插入

我想从Excel中插入数据库,并从Excel中获得所有值。 当我插入到我的数据库中时,我得到Factalexception。 我如何从这个exception中恢复?

MySqlCommand commd = new MySqlCommand(); commd.Connection = OpenConnection(); commd.CommandText = "INSERT INTO sqa_tracking(IID,STARTDATE,ENDDATE,WEEK,SUPPLIER,LINENO,ORDER_ID,BRCARID,PAGE_FIRST,PAGE_LAST,PAGE_COUNT,ARTICLE_NO,COUNT_LINENO,TOTAL_NR_OF_ITEMS,CAR_SUPPLIER,CONTENT_PROVIDER_NAME,MANIFESTATION,FACTOR,UNITS,DATE_OF_SUBMISSION,UNITS_KEY,COUNT_UNITS_KEY,TOTAL_NR_OF_UNITS,ERRORS,KPI_ERRORS,OBII_ELEMENT,CAR_FIELD_NAME,ERROR_TYPE,WRONG_CAPTURE_IN_FILE,CORRECT_CAPTURE_WOULD_BE,REPEATING_IN_CAR,SOURCE_FILE_TYPE,FULL_AUTOM_CONV,ERROR_IN_SOURCE_FILE,ROOT_CAUSE_OF_THE_ERROR,PREVENTIVE_MEASURES,DATE_OF_IMPLEMENTATION,DATE_OF_TRANSMISSION,VALIDATED) VALUES (@IID,@STARTDATE,@ENDDATE,@WEEK,@SUPPLIER,@LINENO,@ORDER_ID,@BRCARID,@PAGE_FIRST,@PAGE_LAST,@PAGE_COUNT,@ARTICLE_NO,@COUNT_LINENO,@TOTAL_NR_OF_ITEMS,@CAR_SUPPLIER,@CONTENT_PROVIDER_NAME,@MANIFESTATION,@FACTOR,@UNITS,@DATE_OF_SUBMISSION,@UNITS_KEY,@COUNT_UNITS_KEY,@TOTAL_NR_OF_UNITS,@ERRORS,@KPI_ERRORS,@OBII_ELEMENT,@CAR_FIELD_NAME,@ERROR_TYPE,@WRONG_CAPTURE_IN_FILE,@CORRECT_CAPTURE_WOULD_BE,@REPEATING_IN_CAR,@SOURCE_FILE_TYPE,@FULL_AUTOM_CONV,@ERROR_IN_SOURCE_FILE,@ROOT_CAUSE_OF_THE_ERROR,@PREVENTIVE_MEASURES,@DATE_OF_IMPLEMENTATION,@DATE_OF_SUBMISSION,@VALIDATED) "; commd.Parameters.AddWithValue("@STARTDATE", StartDate); commd.Parameters.AddWithValue("@ENDDATE", EndDate); commd.Parameters.AddWithValue("@WEEK", Week); commd.Parameters.AddWithValue("@SUPPLIER", Supplier); commd.Parameters.AddWithValue("@LINENO", LineNo); commd.Parameters.AddWithValue("@ORDER_ID", ORDERID); commd.Parameters.AddWithValue("@BRCARID", ""); commd.Parameters.AddWithValue("@PAGE_FIRST", PageFirst); commd.Parameters.AddWithValue("@PAGE_LAST", Pagelast); commd.Parameters.AddWithValue("@PAGE_COUNT", Pagecount); commd.Parameters.AddWithValue("@ARTICLE_NO", ArticleNo); commd.Parameters.AddWithValue("@COUNT_LINENO", COUNTLineNo); commd.Parameters.AddWithValue("@TOTAL_NR_OF_ITEMS", Totalnrofitems); commd.Parameters.AddWithValue("@CAR_SUPPLIER", CARSupplier); commd.Parameters.AddWithValue("@CONTENT_PROVIDER_NAME", ContentProvidename); commd.Parameters.AddWithValue("@MANIFESTATION", Manifestation); commd.Parameters.AddWithValue("@FACTOR", AU); commd.Parameters.AddWithValue("@UNITS", Units); commd.Parameters.AddWithValue("@DATE_OF_SUBMISSION", Dateoftransmission); commd.Parameters.AddWithValue("@UNITS_KEY", unitskey); commd.Parameters.AddWithValue("@COUNT_UNITS_KEY", COUNTunitskey); commd.Parameters.AddWithValue("ERRORS", Errors); commd.Parameters.AddWithValue("@KPI_ERRORS", KPIErrors); commd.Parameters.AddWithValue("@OBII_ELEMENT", OBIIElement); commd.Parameters.AddWithValue("@CAR_FIELD_NAME", CARFieldname); commd.Parameters.AddWithValue("@ERROR_TYPE", Errortype); commd.Parameters.AddWithValue("@IID", IID); commd.Parameters.AddWithValue("@WRONG_CAPTURE_IN_FILE", Wrongcaptureinfile); commd.Parameters.AddWithValue("@CORRECT_CAPTURE_WOULD_BE", Correctcapturewouldbe); commd.Parameters.AddWithValue("@REPEATING_IN_CAR", RepeatinginCAR); commd.Parameters.AddWithValue("@SOURCE_FILE_TYPE", Sourcefiletype); commd.Parameters.AddWithValue("@FULL_AUTOM_CONV", FulAutomConv); commd.Parameters.AddWithValue("@ERROR_IN_SOURCE_FILE", Errorinsourcefile); commd.Parameters.AddWithValue("@ROOT_CAUSE_OF_THE_ERROR", RootCauseoftheError); commd.Parameters.AddWithValue("@PREVENTIVE_MEASURES", PreventiveMeasures); commd.Parameters.AddWithValue("@DATE_OF_IMPLEMENTATION", DateofImplementation); commd.Parameters.AddWithValue("@VALIDATED", Validated); commd.ExecuteNonQuery();` 

我使用内联查询,并从DataTable中获取参数值。

务必记住,仅在命令执行期间发生致命错误的原因是参数值名称不正确。

因此在命令执行过程中纠正参数值以避免胎儿错误您还没有为TOTAL_NR_OF_UNITS&DATE_OF_TRANSMISSION提供参数值。

另外,请按照插入查询中的顺序,在添加参数的同时,更易于排除故障。

 commd.Parameters.AddWithValue("@TOTAL_NR_OF_UNITS",TotalNrOfUnits); commd.Parameters.AddWithValue("@DATE_OF_TRANSMISSION", DateOfTransmission); 

要么这个。 。 。

 SqlCommand cmd = new SqlCommand("insert into tbl_insert values (@id,@name,@Email,@City)"); cmd.Parameters.AddWithValue("@id", Convert.ToInt32(txtId.Text)); cmd.Parameters.AddWithValue("@name", txtName.Text); cmd.Parameters.AddWithValue("@Email", txtEmail.Text); cmd.Parameters.AddWithValue("@City", txtboxCity.Text); 

…或这个…

 con.Open(); SqlCommand cmd = new SqlCommand(@"insert into tbl_insert values(@name,@email,@add)", con); cmd.Parameters.AddWithValue("@name", txtname.Text); cmd.Parameters.AddWithValue("@email", txtemail.Text); cmd.Parameters.AddWithValue("@add", txtadd.Text); cmd.ExecuteNonQuery(); con.Close(); 

应该可以正常工作