2012-03-18 5 views
1

私は、csvファイルをリッピングしてデータテーブルに変換するために、次のコードを使用しています。私の問題は、デバッガがreturnステートメントを実行しないことです。すべてが正しくdatatableに追加されているので、私はその部分が動作することを知っています。私がトラブルに何をすることができるかについてのアイデアはこれをさらに撃つ。また、csvファイルをデータテーブルにインポートする簡単な方法が分かっていれば、それについて学ぶことに非常に興味があります。tryステートメント内でデータテーブルを返すのに問題があります

ありがとうございます!

Public Function loadCSVTableII() As DataTable 

    Dim dt As New DataTable("TableII") 
    Dim line As String = String.Empty 
    Dim counter As Integer = 0 
    Dim reader As New StreamReader(pathTableTwo) 

    Try 
     While Not IsNothing(line) 
      line = reader.ReadLine() 
      Dim lineSep As String() = line.Split(New Char() {","c}) 

      If Not counter = 0 Then 
       dt.Rows.Add(lineSep) 
       counter += 1 
      Else 
       For Each value As String In lineSep 
        dt.Columns.Add(value) 
       Next 
       counter += 1 
      End If 
     End While 

     'cursor never gets to this code block... 
     Dim primarykey(0) As DataColumn 
     primarykey(0) = dt.Columns("Ages") 
     dt.PrimaryKey = primarykey 

     Return dt 

    Catch ex As Exception 
     Throw 
    End Try 

End Function 

更新:コード内のこの行には誤りがあります。

Dim lineSep As String() = line.Split(New Char() {","c}) 

そのオブジェクト参照がオブジェクトのインスタンスに設定されていないと言います。しかし、奇妙なことは、それは全体のデータテーブルを介してうまく動作するということです。 whileループがファイルの最後で終了していないことがありますか?

答えて

1

ストリーム条件の終わりを処理するために、あなたのWhileループを変更してみてください。あなたのコードで関数IsNothingがやっていることはあまり明確ではありません。あなたのラインの分割の

While Not reader.EndOfStream 
    line = reader.ReadLine 
    '// Dim lineSep As String() = line.Split(New Char() {","c}) 

、VB.Netで、それだけでこれを行うには簡単です:

Dim lineSep As String() = line.Split(",") 
+0

はどうもありがとうございました!それは問題を解決しました。 –

1

これにはOLEDBプロバイダを使用できます。

string query = "SELECT Symbol, [Name of Company], FROM [just file name with extension]"; 
      string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + [csv file path without file name] + ";" + "Extended Properties=’text;HDR=YES;’"; 

      //create dataadapter object 
      OleDbDataAdapter adapter = new OleDbDataAdapter(query, connStr); 

      // create table 
      DataTable dtSymbolDetails = new DataTable("ScriptDetails"); 
      dtSymbolDetails.Columns.Add("Symbol"); 
      dtSymbolDetails.Columns.Add("Name of Company"); 

      // fill the table with data using adapter 
      adapter.Fill(dtDetails); 
関連する問題