【问题标题】:An unhandled exception of type 'System.IO.IOException' occurred in mscorlib.dll The directory name is invalidmscorlib.dll 中出现“System.IO.IOException”类型的未处理异常目录名称无效
【发布时间】:2016-09-23 19:17:31
【问题描述】:

我正在尝试将 CSV 文件导入 SQL Server 数据库。但是当我选择文件时,它会在var AllFiles = new DirectoryInfo(CSVpath).GetFiles() ; 处中断并显示错误消息:

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

(注意“目录名称无效。” 由荷兰语句子“De mapnaam is 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;
    }

}

【问题讨论】:

  • CSVpath 是一个有效的目录吗?
  • 简单的CSVpath 代表无效的目录你不能调试看看里面有什么
  • @AmitKumarGhosh CSVpath 从选择文件的浏览按钮获取目录,在调试中它确实显示文件的目录
  • 文件不是目录。
  • 我怎样才能让它使用我选择的文件

标签: c# sql .net


【解决方案1】:

我很确定在这一行会抛出异常

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

将它包裹在 try catch 语句中总是一件好事。 但正如异常消息所说的路径不正确,所以它不存在或语法错误。

【讨论】:

  • 感谢您的帮助,但我想知道语法有什么问题,因为我确定路径存在。
  • 如果您可以发布变量的内容。我也许可以帮助你。
  • 我认为您的意思是CSVpath 它从文本框中获取他的内容,并且该文本框由选择文件的按钮填充,因此它将是C:\Users\s\Desktop\clients TEST.csv
  • 你必须通过在字符串开头使用@或单独转义它们来转义反斜杠。
  • 所以我尝试将string CSVpath = txtfilePath.Text; 改为string CSVpath = "@" + txtfilePath.Text;,现在我得到一个不同的错误,现在它的The specified path type is not supported. 裸露在心,它是从荷兰语翻译过来的。
猜你喜欢
  • 1970-01-01
  • 2014-03-09
  • 1970-01-01
  • 2015-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多