SQL 대량 복사 업로드에서 유효성 검사를 수행하는 방법

asp.net asp.net-mvc-4 sqlbulkcopy

문제

난 그냥라는 데이터베이스 테이블에 저장하는 엑셀 파일을 사용하여 데이터를 업로드 할 MVC4 응용 프로그램을 만들어 tbl_hei_student .

    [HttpPost]
    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Student(HttpPostedFileBase FileUpload1)
    {           
        try
        {
            string conString = string.Empty;
            //Upload and save the file    

           if (Request.Files["FileUpload1"].ContentLength > 1)
            {
                try
                {
                    string excelPath = Path.Combine(HttpContext.Server.MapPath("~/Content/"), Path.GetFileName(FileUpload1.FileName));
                    FileUpload1.SaveAs(excelPath);

                    string extension = Path.GetExtension(FileUpload1.FileName);
                    switch (extension)
                    {
                        case ".xls": //Excel 97-03
                            conString = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
                            break;
                        case ".xlsx": //Excel 07 or higher
                            conString = ConfigurationManager.ConnectionStrings["Excel07+ConString"].ConnectionString;
                            break;
                        default:
                            this.SetNotification("The file type submitted is invalid", NotificationEnumeration.Error);
                             return RedirectToAction("Student", "Excel");

                    }
                    conString = string.Format(conString, excelPath);  
                }    
                try
                {
                    using (OleDbConnection excel_con = new OleDbConnection(conString))
                    {
                        excel_con.Open();

                        DataTable dtExcelData = new DataTable();

                        string query =    "SELECT " +
                                          "s1.HEC_ID, " +
                                          "s1.Student_Personal_ID, " +                                         
                                          "s1.Date_of_Birth "  ;

                        using (OleDbDataAdapter oda = new OleDbDataAdapter(query, excel_con))
                        {
                            oda.Fill(dtExcelData);
                        }

                        //if (dtExcelData.DefaultView.Count < 0)
                        //    {
                        //        throw new Exception("Your data sheet is empty. PLeaswe upload another.");
                        //    }

                        string consString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
                        using (SqlConnection con = new SqlConnection(consString))
                        {
                            using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con,
                                                        SqlBulkCopyOptions.CheckConstraints |
                                                        SqlBulkCopyOptions.FireTriggers |
                                                        SqlBulkCopyOptions.KeepNulls |
                                                        SqlBulkCopyOptions.TableLock |
                                                        SqlBulkCopyOptions.UseInternalTransaction |
                                                        SqlBulkCopyOptions.KeepIdentity,
                                                        null))
                            {
                                //Set the database table name
                                sqlBulkCopy.DestinationTableName = "tbl_HEI_student";

                                sqlBulkCopy.BulkCopyTimeout = 0;



                                sqlBulkCopy.ColumnMappings.Add("HEC_ID", "HEC_ID");
                                sqlBulkCopy.ColumnMappings.Add("Student_Personal_ID", "Student_Personal_ID");
                                sqlBulkCopy.ColumnMappings.Add("Date_of_Birth", "Date_of_Birth");


                                con.Open();    


                                finally
                                {
                                    con.Close();
                                }
                            }
                        }
                    }
                }    
            }    
        }
    }

내 테이블에 다음과 같은 필드를 가지고 엑셀 파일을 사용하여 업로드하는 데이터를 캡처 할 수 있습니다.

Column Name            | Data Type

HEC_ID                 | nvarchar(100)

Student_Personal_ID    | nvarchar(100)     

Date_of_Birth          | datetime

나의 탁월함에는 수백 줄이 있는데,

한 데이터 필드가 Date_of_Birth 필드에 잘못된 형식으로있는 경우 업로드 작업을 종료하고 싶습니다.

인기 답변

데이터베이스에 삽입하기 전에 변수로 가져 와서 확인하십시오.

DateTime date = DateTime.ParseExact(inputString, formatString, System.Globalization.CultureInfo.InvariantCulture) 


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