- ベストアンサー
SQL INSERTの使い方を教えてください
vb2008でアクセスへデータを書き込む部分のコードを書こうとしているのですが、SQLのINSERT構文を使って連続した10レコードをテーブルへINSERTしたいのですが1つわからないところがあります。例えば、あるフィールドで、1番目のレコードだけアイテムが入り、残りは書き込む必要がない場合、Do~Loopなど使用しINSERT構文にて書き込み処理する場合、どのように条件わけするとすっきり書けるでしょうか・・・?いい感じのロジックがあればご教授願います。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 私の場合、データテーブルを用いて、そのフェッチ条件を利用してDB登録処理を回します。 'データテーブル宣言 Dim データテーブル As New DataTable 'データテーブルカラム追加 データテーブル.Columns.Add("列1") 'レコード登録 データテーブル.Rows.Add("") データテーブル.Rows.Add("アイテム") データテーブル.Rows.Add("") 'フィールド列1にアイテムが登録されているレコードを抽出 For Each レコード As DataRow In データテーブル.Select("列1 = 'アイテム'") 'ここでDBに登録する処理を追加 Next
その他の回答 (1)
- Alshark
- ベストアンサー率12% (1/8)
>連続した10レコードをテーブルへINSERT ということですが、私(初心者ですが)の場合はINSERT文のValue値をパラメータ扱い(@を使うやつで)にして For~Nextで10回ループさせます。 例 Try Dim SQL As String = "" SQL = "INSERT INTO Table (A,B,C) VALUES(@A,@B,@C)" Using OleCn As New OleDbConnection(データベースのパス) Using OleCmd As New OleDbCommand(SQL) OleCmd.Connection = OleCn OleCn.Open() OleCmd.Parameters.Add("@A", OleDbType.Char) OleCmd.Parameters.Add("@B", OleDbType.Char) OleCmd.Parameters.Add("@C", OleDbType.Char) For i as integer = 0 to 9 ここで入力条件を入れる OleCmd.Parameters("@A").Value = Me.ComboA.Text など OleCmd.ExecuteNonQuery() Next i End Using End Using Catch ex As Exception MessageBox.Show(ex.ToString, "例外発生") Exit Sub End Try こんな感じですがどうでしょう? 空白データはnull値を代入すればいいですよ
お礼
参考になります!ありがとうございます。m(_ _ )m
お礼
参考にさせて頂きます!m(_ _ )m