2009-07-29 7 views
1

このメソッドは例外をスローしません。また、読み取ったcsvファイルから行を返しません。私は間違って何をしているのか分からない。csvファイルをデータテーブルにインポートすると結果が返されない

ご迷惑をおかけして申し訳ありません。

public string ImportCsvFile(string filePath) 
    { 
     FileInfo file = new FileInfo(filePath); 
     //string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"" + file.DirectoryName + "\" Extended Properties='text;HDR=Yes;FMT=Delimited(,)';"; 
     string connString = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};" + @" Extended Properties={1}", file.DirectoryName, "'Text;HDR=YES;FMT=CSVDelimited'"); 
     using (OleDbConnection con = new OleDbConnection(connString)) 
     { 
      OleDbCommand cmd = new OleDbCommand(string.Format("SELECT * FROM [{0}]", file.Name), con); 
      // Using a DataTable to process the data 
      try 
      { 
       con.Open(); 
       ds = new DataTable("MyTable"); 
       OleDbDataAdapter adp = new OleDbDataAdapter(cmd); 
       adp.Fill(ds); 
       foreach (DataRow row in ds.Rows) 
       { 
        System.Diagnostics.Debug.WriteLine(row.ToString()); 
       } 
      } 
      catch (Exception error) 
      { 
       String errorString; 
       errorString = "Error occurred while importing data from source file." + System.Environment.NewLine + 
       "Error Message: " + error.Message + System.Environment.NewLine + 
       "Stack Trace: " + error.StackTrace; 
       return errorString; 
      }      
     } 
     return "File imported to DataTable"; 
    } 
+0

ここでちょうど刺すが、con.close()は表示されません。 – David

+1

"using"ステートメントでは、.Close()呼び出しは必要ありません。接続を閉じて処分します。 –

答えて

1

このコードは問題ありません。ここで問題となったのはcsvファイルです。何らかのタイプのファイル破損があったか、ファイル形式が何らかの形で互換性がありませんでした。