Дублирование SQL-оператора в обычную форму
Я пытаюсь использовать свои контрольные списки для заполнения полей T. или S. тем, что выбрано. Это моя первая попытка использовать формат добавления. Мне нужна помощь, чтобы разобраться в этом. Я поместил исходный SQL-оператор ниже.
Private Sub sompare_other_tables() Dim sqlcon As New SqlConnection("sqlstatement") Dim cb As New System.Text.StringBuilder("MERGE INTO") Dim tableName As String = ListBox1.SelectedItems(Convert.ToString(tableName)) Dim tablename2 As String = ListBox2.SelectedItems(Convert.ToString(tablename2)) cb.AppendFormat(" [{0}] ", tableName.Replace("]", "]]")) cb.Append("as T") cb.AppendFormat(" using [{0}] ", tablename2.Replace("]", "]]")) cb.Append("As S ") ' cb.AppendFormat(", [{0}] nvarchar(max) NULL", tableName.Replace("]", "]]")) cb.AppendFormat("on T.", tableName.Replace("]", "]]")) cb.Append(Convert.ToString(" = ")) cb.Append("[{0}] S.", tablename2.Replace("]", "]]")) For Each item In CheckedListBox1.CheckedItems Dim columnName As String = Convert.ToString(item) cb.AppendFormat("on T." + columnName.Replace("]", "]]")) cb.Append(" = ") cb.Append("S." + columnName.Replace("]", "]]")) Next Dim sql As String = cb.ToString() sqlcon.Open() Dim cmd As SqlClient.SqlCommand cmd = New SqlClient.SqlCommand(sql, sqlcon) MessageBox.Show(cmd.CommandText) cmd.ExecuteNonQuery() sqlcon.Close()
Это исходный оператор SQL:
Merge into table1 as T using [table] as S on T.[Last Name] = S.[Last Name] and T.[First Name] = S.[First Name] When Matched then Update Set T.[Birth] = S.[Birth]; DELETE T1 FROM [table] T1 JOIN [table1] T2 ON T1.[Last Name] = T2.[Last Name] AND T1.[First Name] = T2.[First name];
Что я уже пробовал:
Я не очень-то старался, так как мало что знаю о добавлениях. если есть лучший способ написать заявление, я бы с удовольствием его выслушал.