将csv文件插入位于其他位置的Access数据库C#

时间:2016-08-03 18:40:25

标签: c# database csv ms-access oledb

我正在尝试将CS​​V文件中的数据插入到本地Access数据库的表中,但CSV文件与我的数据库位于不同的位置。 insert语句正在尝试插入位于Windows临时文件夹中的CSV文件,但我一直收到错误消息,指出无法找到该对象(CSV文件)。感谢帮助,谢谢!

以下是我收到的错误:

  

Microsoft Access数据库引擎找不到对象' S_M_85010747_201605.csv'。确保对象存在,并且您正确拼写其名称和路径名称。如果' S_M_85010747_201605.csv'不是本地对象,请检查您的网络连接或联系服务器管理员。

以下是我的代码:

//CSV file name
string csvFile = ddlReportType.Text.Substring(0, 1) + "_"
                + ddlDateType.Text.Substring(0, 1) + "_" + lblVendorID.Text + "_" + txtDate.Text + ".csv";

        //Path for temporary folder
        string marFolder = Path.GetTempPath() + @"\MobileAppReports";

        //CSV file in temporary folder path
        string marCSVfolderPath = marFolder + @"\" + ddlReportType.Text.Substring(0, 1) + "_"
                + ddlDateType.Text.Substring(0, 1) + "_" + lblVendorID.Text + "_" + txtDate.Text + ".csv";


        var fileNameToInsert = Path.GetFileName(marCSVfolderPath);

        if (File.Exists(marCSVfolderPath))
        {
            OleDbCommand cmdBulk = new OleDbCommand(@"INSERT INTO SalesSummary" +
                            @"SELECT * FROM [Text;FMT=Delimited;HDR=Yes;ACCDB=Yes;Database=C:\Desktop].[" + fileNameToInsert + "]", MyConn);

            MyConn.Open();
            cmdBulk.ExecuteNonQuery();
            MyConn.Close();

            Directory.Delete(marFolder, true);//Deletes the csv file in the temp folder
        }
        else
        {
            MessageBox.Show(csvFile + " does not exist in the temp folder.");
        }

1 个答案:

答案 0 :(得分:0)

我可以看到你定义了csv文件路径和临时文件路径,但我没看到你将csv复制到临时路径的位置,所以不知道它是如何通过File.Exists阶段的。

此外,您的查询字符串仅定义fileNameToInsert而不是整个路径。正如其他人所说,看起来您也将数据库路径定义为csv文件。

这是所有的代码吗?真的觉得你错过了这里的一些东西。