tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル csvのデータを取得したい・・4徹目です(TT)
投稿日: 2008/01/02(Wed) 18:43
投稿者ダダ
> > 順序だてて考えて見ましょう。
> >
> > 1 CSVファイルのオープン
> > 2 CSVファイルの読込
> > 3 (データがなくなるまで繰り返し)
> >    読み込んだデータを分割
> >    sql文字列の生成と実行
> >    次のデータを読み込み
> > 4 CSVファイルのクローズ
> >
> > 基本はこんな感じですよ。

SQLの迷路に迷い込んだ初心者です。
レスが遅くて申し訳ありません。

先日じぇふんさんの助言を得て、コードを書きました。

このコードは、ウィンドウズモバイルで使うデータベース.sdfを
XP上のcsvテキストを元に生成するアプリケーションを目指しています。

以下のコードでデバックしたところ

cmd.excute.nonquery

のところで、例外として排除されてしまいます。
いろいろ調べたのですが、この問題を解決できません。

何か良いアイディアはないでしょうか?



以下コードを書きます。


Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e
                               As System.EventArgs) Handles Button1.Click

        'データベース重複防止

        

   If System.IO.File.Exists("D:\User\ikejiri\testsdf.sdf") Then
            System.IO.File.Delete("D:\User\ikejiri\testsdf.sdf")
        End If




        ' ファイル名で指定したデータベースを作成します。拡張子は SDF です

        Dim eng As SqlCeEngine = New SqlCeEngine( _
            "Data Source=D:\User\ikejiri\testsdf.sdf")
        eng.CreateDatabase()

        ' データベースを開きます。
        Dim cn As SqlCeConnection = New SqlCeConnection( _
            "Data Source=D:\User\ikejiri\testsdf.sdf")
        cn.Open()

        ' テーブルを開きます。
        Dim sql As String = "CREATE TABLE csv " & _
        "(単語 nvarchar(100) NOT NULL, " & _
        "意味 nvarchar(100) NOT NULL," & _
        "品詞 nvarchar(100) NOT NULL," & _
        "例文 nvarchar(500) NOT NULL," & _
        "例文意味 nvarchar(500) NOT NULL)"

        

    Dim cmd As SqlCeCommand = New SqlCeCommand(sql, cn)
        cmd.CommandType = CommandType.Text
        cmd.ExecuteNonQuery()


        'CSVファイルを開いてSDFに挿入する

        '定義

        Dim path As String = "D:\User\ikejiri\sampletext.txt"
        Dim textfile As IO.StreamReader

        Dim line As String

        Dim textarray() As String

        Dim text As string

        

        '開くときの例外排除

        If IO.File.Exists(path) = False Then

            MessageBox.Show("パスミス", "結果")

            Exit Sub

        End If

        'CSVファイル開く

        textfile = New IO.StreamReader(path, System.Text.Encoding.Default)




        Do While -1

            'ラインを一行読む

            line = textfile.ReadLine()

            '読み終わったときの処理

            If line Is Nothing Then
                MessageBox.Show("終わり", "結果")
                Exit Do

            End If

            '一行をカンマで分割’
            textarray = line.Split(",")

            For Each text In textarray 'textarrayの一つ一つの分割textに対して      

                sql = "INSERT INTO csv " & _
                          "(単語,意味,品詞,例文,例文意味) VALUES
                          (text,text,text,text,text)"

                cmd.CommandText = sql

                cmd.ExecuteNonQuery()

            Next

        Loop


        'データベース閉じる
        cn.Close()


        'CSV閉じる
      
      
        textfile.Close()

  
    End Sub

長文申し訳ありません。。。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。