Visual Basic 2005で、データベース操作をしています。データセットの中にテーブルを作成しておき、テキストファイルに、同じ配列に、カンマで区切ったデータがあるとします。これをインポートする方法を、具体的コード記述でお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/08/09 12:33:08
  • 終了:2006/08/09 17:07:08

回答(1件)

id:KirakiraHikaru No.1

KirakiraHikaru回答回数354ベストアンサー獲得回数682006/08/09 13:35:23

ポイント60pt

先ほど答えようと思ってたんですが、

仕事のタイミングもあるので後回しにしてました。すみません。


データセット内にテーブルを作成しておくということなので、

ヘッダ付のCSVファイルであれば簡単に取り込めます。

1.CSVファイルを用意

NO,NAME
1,name1
2,name2
3,name3

2.データセットを読み込むクラスに下記を追加

Imports System.Data
Imports System.Data.OleDb

3.フォームに、表示確認用にDataGridViewを追加(確認の必要がなければ省略してください)

4.読み込みたいタイミングで下記の処理を実行

(「Const xlsPath,xlsFile」の値は環境に合わせて変更してください、

 表示確認が必要ない場合はDataGridView1を含む行を削除)

        Const csvPath As String = "H:\My Documents\Visual Studio 2005\Projects\Sample\SampleIe\testFile\"
        Const csvFile As String = "test.csv"
        ' appropriate for your environment.
        Dim sConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" _
                    & "Data Source=" & csvPath _
                    & ";" & "Extended Properties='text;FMT=Delimited'"
        ' Create the connection object by using the preceding connection string.
        Dim objConn As New OleDbConnection(sConnectionString)
        ' Open connection with the database.
        objConn.Open()
        ' The code to follow uses a SQL SELECT command to display the data from the worksheet.
        ' Create new OleDbCommand to return data from worksheet.
        Dim objCmdSelect As New OleDbCommand("SELECT * FROM " & csvFile, objConn)
        ' Create new OleDbDataAdapter that is used to build a DataSet 
        ' based on the preceding SQL SELECT statement.
        Dim objAdapter1 As New OleDbDataAdapter()
        ' Pass the Select command to the adapter.
        objAdapter1.SelectCommand = objCmdSelect
        ' Create new DataSet to hold information from the worksheet.
        Dim objDataset1 As New DataSet()
        Dim objTable As DataTable
        Dim Col As DataColumn
        objDataset1 = New DataSet("Data")
        objTable = New DataTable("Table")
        Col = New DataColumn("NO")
        Col.DataType = Type.GetType("System.Int32")
        objTable.Columns.Add(Col)
        Col = New DataColumn("NAME")
        Col.DataType = Type.GetType("System.String")
        objTable.Columns.Add(Col)
        objDataset1.Tables.Add(objTable)
        ' Fill the DataSet with the information from the worksheet.
        objAdapter1.Fill(objDataset1.Tables(0))
        ' Build a table from the original data.
        DataGridView1.DataSource = objDataset1.Tables(0).DefaultView
        ' Clean up objects.
        objConn.Close()

用意したデータセットのテーブルでなく、読み込み時に自動作成するのであれば、

Extended PropertiesにHDR=NOを追加し、

objAdapter1.Fill(objDataset1.Tables(0))をobjAdapter1.Fill(objDataset1, "csvData")

としてやれば簡単に読み込めます。

また、自分でCSVファイルを読み込んでデータセットに行を追加していくループにしても可能です。

http://www.hatena.ne.jp/

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません