DataSet(DataTable)の更新

検索しているとDataSet(DataTable)の更新にCommandBuilderが使われていることが多いんですが、CommandBuilderが吐き出すSQL文はイマイチなようです。
SQL構文に慣れれば自分で処理した方が効率がよいです。
たとえば

  Private Sub dt入荷先Update()
    Dim flgデータ更新 As Boolean = False
    SqlCommand = New OleDb.OleDbCommand("UPDATE 入荷先 SET 入荷先 = @入荷先 WHERE (入荷先C = @入荷先C)")

    '更新している行だけ更新用のSQLを発行する
    For Each dt入荷先Row As DataRow In dt入荷先.Rows
      '更新されているかな?
      If dt入荷先Row.RowState = DataRowState.Modified Then
        SqlCommand.Parameters.Clear()
        SqlCommand.Parameters.Add("@入荷先", OleDb.OleDbType.Char)
        SqlCommand.Parameters.Add("@入荷先C", OleDb.OleDbType.Char)

        'なにも入力されていなければNullにする
        If dt入荷先Row.Item(1, DataRowVersion.Current).ToString.Length = 0 Then
          SqlCommand.Parameters("@入荷先").Value = System.DBNull.Value
        Else
          SqlCommand.Parameters("@入荷先").Value = dt入荷先Row.Item(1, DataRowVersion.Current).ToString
        End If

        SqlCommand.Parameters("@入荷先C").Value = dt入荷先Row.Item(0).ToString

        db.ExecuteSqlCommandNonQuery(SqlCommand)
        flgデータ更新 = True
      End If
    Next

    If flgデータ更新 Then
      MsgBox("データ更新が終了しました。", MsgBoxStyle.Information, "")
    Else
      MsgBox("更新されたデータがありませんでした。", MsgBoxStyle.Information, "")
    End If
  End Sub
な感じです。
このやり方だと複数のテーブルを結合したレコードの更新もできます。
各々のテーブルに対して更新SQL文を書く必要がありますが...
そのときはちゃんとトランザクションを使いましょう。