2016-09-23 424 views
0

我试图将CSV文件导入到SQL服务器数据库中。但是,当我选择文件它打破在var AllFiles = new DirectoryInfo(CSVpath).GetFiles() ;一个错误信息:在mscorlib.dll中发生未处理的“System.IO.IOException”类型异常目录名称无效

类型的未处理的异常“System.IO.IOException”出现在mscorlib.dll目录名称是无效的。

(注意这个“目录名称是无效的。” 已经从荷兰的句子翻译成“德mapnaam是ongeldig。”)

 string server = "LOCALHOST"; 
    string database = "klantbestand"; 
    string SQLServerConnectionString = String.Format("Data Source={0};Initial Catalog={1};Integrated Security=true", server, database); 


    string CSVpath = txtfilePath.Text; // CSV file Path 
    string CSVFileConnectionString = String.Format(CSVpath); 

    var AllFiles = new DirectoryInfo(CSVpath).GetFiles() ; 
    string File_Name = string.Empty; 

    foreach (var file in AllFiles) 
    { 
     try 
     { 
      DataTable dt = new DataTable(); 
      using (OleDbConnection con = new OleDbConnection(CSVFileConnectionString)) 
      { 
       con.Open(); 
       var csvQuery = string.Format("select * from [{0}]", file.Name); 
       using (OleDbDataAdapter da = new OleDbDataAdapter(csvQuery, con)) 
       { 
        da.Fill(dt); 
       } 
      } 

      using (SqlBulkCopy bulkCopy = new SqlBulkCopy(SQLServerConnectionString)) 
      { 
       bulkCopy.ColumnMappings.Add(0, "Clientnr"); 
       bulkCopy.ColumnMappings.Add(1, "contact"); 
       bulkCopy.ColumnMappings.Add(2, "company"); 
       bulkCopy.ColumnMappings.Add(3, "address"); 
       bulkCopy.ColumnMappings.Add(4, "zipcode"); 
       bulkCopy.ColumnMappings.Add(5, "phone"); 
       bulkCopy.ColumnMappings.Add(6, "mobile"); 
       bulkCopy.ColumnMappings.Add(7, "email"); 
       bulkCopy.ColumnMappings.Add(8, "taxnumber"); 
       bulkCopy.ColumnMappings.Add(9, "BIC"); 
       bulkCopy.ColumnMappings.Add(10, "Bank"); 
       bulkCopy.ColumnMappings.Add(11, "SendMethod"); 
       bulkCopy.ColumnMappings.Add(12, "Active"); 
       bulkCopy.ColumnMappings.Add(13, "Notes"); 
       bulkCopy.ColumnMappings.Add(14, "PaymentMethod"); 
       bulkCopy.ColumnMappings.Add(15, "Mandate"); 
       bulkCopy.ColumnMappings.Add(16, "MandatDate"); 
       bulkCopy.ColumnMappings.Add(17, "CollectionType"); 
       bulkCopy.ColumnMappings.Add(18, "Country"); 
       bulkCopy.ColumnMappings.Add(19, "EmailIntro"); 
       bulkCopy.ColumnMappings.Add(20, "PaymentPeriod"); 
       bulkCopy.ColumnMappings.Add(21, "Reference"); 

       bulkCopy.DestinationTableName = "GegevensCSV"; 
       bulkCopy.BatchSize = 0; 
       bulkCopy.WriteToServer(dt); 
       bulkCopy.Close(); 
      } 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message, "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); 
     } 
    } 
} 

private void btnbrowse_Click(object sender, EventArgs e) 
{ 
    OpenFileDialog filedialog = new OpenFileDialog(); 
    filedialog.Title = "kies csv file"; 
    filedialog.Filter = "csv Files|*.csv"; 
    filedialog.InitialDirectory = @"c:\"; 

    if(filedialog.ShowDialog()== DialogResult.OK) 
    { 
     txtfilePath.Text = filedialog.FileName; 
    } 

} 
+0

是'CSVpath'有效的目录吗? –

+0

简单'CSVpath'表示无效的目录你不能调试,看看里面有什么 –

+0

@AmitKumarGhosh CSVpath从选择文件的浏览按钮中获取目录,在调试中显示目录到文件 – Stijn

回答

0

我敢肯定的例外是在此抛出行

var AllFiles = new DirectoryInfo(CSVpath).GetFiles() ; 

它总是一个好东西包围这try try语句周围。 但是,由于异常消息说路径不正确,所以它不存在或语法错误。

+0

感谢您的帮助,但我想知道语法有什么问题,因为我确信路径存在。 – Stijn

+0

如果您可以发布变量的内容。我可能会帮助你。 – iCode4U

+0

我认为你的意思是'CSVpath'它从文本框中获取他的内容,并且该文本框被一个选择该文件的按钮填充,因此它将成为'C:\ Users \ s \ Desktop \ clients TEST.csv' – Stijn

相关问题