2016-06-07 2 views
0

Я пытаюсь перегрузить метод «Удалить» TableAdapter (approach). Как я могу выполнить инструкцию SQL из «здесь» для обработки удаления?Custom TableAdapter Удалить метод переопределения

У меня есть:

Namespace AFL_BackendDataSetTableAdapters 

    Partial Class Log_entry_unitTableAdapter 

     Public Overloads Function Delete(ByVal LogEntryID As Integer) As Integer 

      Dim SQL As String 

      SQL = "DELETE FROM log_entry_unit WHERE log_entry_unit_id=" & LogEntryID 

      '?????.Execute SQL 

      Return 0 

     End Function 

    End Class 

End Namespace 

Перегрузка работает нормально, но я не знаю, как сделать твердую часть и фактически манипулировать данными здесь. Раньше я только что зашел в Dataset Designer и вручную обновил сгенерированные методы для работы, как я их хочу, но всякий раз, когда я использую мастер для восстановления набора данных, это (как и ожидалось) перезаписывается.

Я ранее управлял данными только с помощью сгенерированных методов, и теперь я застрял.

EDIT ж/Окончательный ответ Основываясь на помощь Уильяма ниже вот окончательный рабочий раствор (Обратите внимание, я просто должен был использовать OleDb вместо SQL, так как мой Dataset является Access:

Imports System.Data.OleDb 

Namespace AFL_BackendDataSetTableAdapters 

    Partial Class Log_entry_unitTableAdapter 

     Public Overloads Function Delete(ByVal LogEntryID As Integer) As Integer 

      Dim queryString As String = "DELETE FROM log_entry_unit WHERE log_entry_unit_id=" & LogEntryID 
      Dim command As New OleDbCommand(queryString, Connection) 
      Dim r As Integer 

      Try 
       Connection.Open() 
       r = command.ExecuteNonQuery() 
      Catch ex As Exception 
       MsgBox(ex.Message) 
       r = 0 
      Finally 
       Connection.Close()     
      End Try 

      Return r 

     End Function 

    End Class 

End Namespace 

ответ

0

Я жёстко соединение . строка только для справки Это должно быть в конфигурационном файле в качестве примера:.

Dim connectionString As String = _ 
     "Data Source=(local);Initial Catalog=YourDatabase;" _ 
     & "Integrated Security=true" 

    Dim queryString As String = "DELETE FROM log_entry_unit WHERE log_entry_unit_id=" & LogEntryID 

    ' Create and open the connection in a using block. This 
    ' ensures that all resources will be closed and disposed 
    ' when the code exits. 
    Using connection As New SqlConnection(connectionString) 

     ' Create the Command 
     Dim command As New SqlCommand(queryString, connection) 

     ' Open the connection in a try/catch block. 
     Try 
      connection.Open() 
      command.ExecuteNonQuery() 
     Catch ex As Exception 
      ' handle exception here 
     End Try 
    End Using 

EDIT

Возможно, я должен упомянуть вас, возможно, вы захотите снова заполнить свой адаптер после удаления.

+0

Этот ответ действительно не имеет значения, поскольку он не изменяет существующий адаптер таблицы. – jmcilhinney

+0

@jmcilhinney Я не согласен. Это актуально. Вам все еще нужен код ADO.NET. После удаления они должны снова заполнить адаптер. Возможно, это то, что должно быть включено в ответ. –

+0

Это концептуально то, что я искал. Мне не нужно обновлять существующий адаптатор таблицы, потому что я хочу сделать это вне этого метода. Это соединение с доступом, поэтому я думаю, что мне нужно использовать OleDb вместо SqlConnection, но, с первого взгляда, похоже, что это будет то же самое. Если я застрял, я открою новый вопрос. Благодаря! – BrINClHOF

Смежные вопросы