Filehelpers импортирует дату и время в sql

Я использую Filehelpers и пытаюсь импортировать файл CSV, содержащий два поля даты и времени (ддммгггг чч:мм), которые я не могу загрузить в свою таблицу.

Я пробовал это:

 public class TBAtable
    {
        public string BookingNum;
        public string IdVessel;
        public float Length;
        public float Beam;
        public float SumDraught;
        public int Capacity;
        public float GrossTon;
        public static string Pentry;
        public static string Pdepart;
        public string Berth;

    }

 protected void UploadA(object sender, EventArgs e)
    {

        string excelPath = Server.MapPath("~/Files/") + Path.GetFileName(FileUpload2.PostedFile.FileName);
        FileUpload2.SaveAs(excelPath);

        SqlServerStorage storage = new SqlServerStorage(typeof(TBFtable), ConfigurationManager.ConnectionStrings["bd"].ConnectionString);


        storage.InsertSqlCallback = new InsertSqlHandler(GetInsertSqlCustA);

        TBAtable[] res = CommonEngine.ReadFile(typeof(TBAtable), excelPath) as TBAtable[];
        storage.InsertRecords(res);

        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('Données enregistrées avec succès !')", true);
    }
    protected string GetInsertSqlCustA(object record)
    {
        TBAtable obj = (TBAtable)record;
        CultureInfo enUS = new CultureInfo("en-US");
        DateTime PortEntry = DateTime.ParseExact(TBAtable.Pentry, "dd/MM/yyyy HH:mm:ss.fff", enUS, DateTimeStyles.None);
        DateTime PortDeparture = DateTime.ParseExact(TBAtable.Pdepart, "dd/MM/yyyy HH:mm:ss.fff", enUS, DateTimeStyles.None);


        return String.Format("INSERT INTO TA (BookingNum, IdVessel, Length, Beam, SumDraught,Capacity, GrossTon, PortEntry,PortDeparture,Berth ) " + " VALUES ( '{0}' , '{1}' , '{2}' , '{3}', '{4}' , '{5}' , '{6}', '{7}' , '{8}' , '{9}'  ); ", obj.BookingNum, obj.IdVessel, obj.Length, obj.Beam, obj.SumDraught , obj.Capacity ,obj.GrossTon , PortEntry , PortDeparture , obj.Berth  );

    } 

В основном я изменил поля DateEntry и DateDeparture на строки, затем попытался преобразовать эти строки в правильный формат даты и времени, чтобы я мог вставить эти значения в свою таблицу, которая находится в sqlserver.

Я получаю эту ошибку: System.ArgumentNullException .. Что мне делать?


person Hind Ahmamad    schedule 10.08.2014    source источник


Ответы (1)


Ваше преобразование в DateTime не обрабатывает ситуацию, когда TBAtable.Pentry равно нулю.

Вместо этого используйте TryParseExact. Документация MSDN находится здесь

DateTime portEntry = DateTime.MinValue;
bool isValidDateTime = DateTime.TryParseExact(null, "dd/MM/yyyy HH:mm:ss.fff", enUS, DateTimeStyles.None, out portEntry);

if (!isValidDateTime)
{
    // throw? log? ignore?
}
person shamp00    schedule 11.08.2014