Как создать кнопку обновления для базы данных?

У меня есть проблема, касающаяся моей кнопки обновления, я не знаю, с чего начать, чтобы сделать его обновить мою базу данных SQL, я использую SSMS Microsoft для создания моих табличных предметов, и я также связал его с моим VS 2010 ULTIMATE, где я перетаскиваю мою таблицу в LINQtoSQL и DATASET, я создал кнопку Сохранить, которая успешно сохраняет в мою базу данных и обновляет мой datagridview.

[ Private Sub Button18_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
    If txtSubjectName.Text = "" Then
        ErrorProvider1.SetError(txtSubjectName, "Subject Name Cannot be Empty!")
        Exit Sub
    ElseIf txtSubSName.Text = "" Then
        ErrorProvider2.SetError(txtSubSName, "Subject Short Name Cannot be Empty!")
        Exit Sub
    End If
    Dim db As New EMSDataContext
    Dim SaveSubject = From C In db.Subjects
            Where C.SubjectName = txtSubjectName.Text
            Select C

    If SaveSubject.Count <> 0 Then
        MsgBox("Subject already exits!!", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "Alart!!")
        Exit Sub
    Else
        Dim SaveNSubject As New Subject With {.SubjectName = txtSubjectName.Text, .ShortName = txtSubSName.Text}
        db.Subjects.InsertOnSubmit(SaveNSubject)
        db.SubmitChanges()
        MsgBox("Subject added successfully!", MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "Information")
    End If
    Registration_Load(sender, e)
    txtSubjectName.Text = ""
    txtSubSName.Text = ""
End Sub]

И у меня также есть кнопка Delete, которая успешно удаляет мои данные из базы данных и обновляет мой datagridview.

  [Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click
    Dim A As New EMSDataContext
    Dim B = From C In A.Subjects
            Where C.ID = Val(DtgvSubject.CurrentRow.Cells(0).Value)
            Select C
    Try
        A.Subjects.DeleteOnSubmit(B.FirstOrDefault)
        If MsgBox("Are You Sure to Delete This Record?", MsgBoxStyle.Question + vbYesNo, "Question") = MsgBoxResult.Yes Then
            A.SubmitChanges()
            MsgBox("Record Deleted Successfully!", MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "Information")
            txtSubjectName.Text = ""
            txtSubSName.Text = ""
            Registration_Load(sender, e)
        Else
            txtSubjectName.Text = ""
            txtSubSName.Text = ""
            Registration_Load(sender, e)
        End If
    Catch ex As Exception
        MsgBox("Select a Record First!", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "ALERT!!!")
    End Try
    If B.Count = 0 Then
        MsgBox("Please select list to delete!", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "Alart!!")

    End If

End Sub]

Я также создал события двойного щелчка ячейки datagridview, где я получаю значения ячеек в текстовое поле Имя субъекта и текстовое поле короткое имя субъекта, если я дважды щелкнул, что также успешно.

 [ Private Sub DtgvSubject_CellDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DtgvSubject.CellDoubleClick
    Try
        Dim i As Integer
        i = DtgvSubject.CurrentRow.Index
        Me.txtSubjectName.Text = DtgvSubject.Item(1, i).Value
        Me.txtSubSName.Text = DtgvSubject.Item(2, i).Value
    Catch ex As Exception
        MsgBox("No Values in the Cells!", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "Alert!!!")
        Button17_Click(sender, e)
    End Try
End Sub]

Мой вопрос в том, как я могу создать кнопку обновления в моей базе данных после получения значений в текстовые поля и обновить их, отправить изменения и обновить мой datagridview?

2 ответа

  1. Предполагая, что входные данные не привязаны к набору данных, вам просто нужно извлечь существующую запись из базы данных, обновить запись и сохранить ее снова. Что-то вроде этого должно работать:

    public Function updaterecord (field1 as integer, field2 as text) as Object
     Dim db As New EMSDataContext
    Dim SaveSubject = From C In db.Subjects
            Where C.SubjectName = txtSubjectName.Text
            Select C
    if SaveSubject is not Nothing then
       C.id = field1
       C.name = field2 'etc etc
    End if
    db.SaveChanges()
    return 
    From C In db.Subjects
            Where C.SubjectName = txtSubjectName.Text
            Select C
        End Function
    
  2. Спасибо Haim я решил проблему с помощью LinqtoSQL

     [ Private Sub bnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bnUpdate.Click
        If txtClassTeacher.Text = "" Or txtClassName.Text = "" Or txtClassSName.Text = "" Or cboClassSection.Text = "" Then
            MsgBox("Select the data you want Update Please!", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "ALERT!!!")
            Exit Sub
        End If
        Dim db As New EMSDataContext
        Dim SaveClasses = From c In db.Classtbls
                          Where c.ID = Val(DtgvClasstbl.CurrentRow.Cells(0).Value)
                          Select c
    
        For Each c As Classtbl In SaveClasses
            c.Class_Teacher = txtClassTeacher.Text
            c.Class_Name = txtClassName.Text
            c.Short_Name = txtClassSName.Text
            c.Section = cboClassSection.Text
            'Inserting additional changes
        Next
        'Submitting changes to the Database
        Try
            If MsgBox("Are You Sure You Want Update This Record?", MsgBoxStyle.Question + vbYesNo, "Question") = MsgBoxResult.Yes Then
                db.SubmitChanges()
                MsgBox("Data Successfully Updated!", MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "Success!")
                Registration_Load(sender, e)
                txtClassTeacher.Text = ""
                txtClassName.Text = ""
                txtClassSName.Text = ""
                cboClassSection.Text = ""
            Else
                Registration_Load(sender, e)
                txtClassTeacher.Text = ""
                txtClassName.Text = ""
                txtClassSName.Text = ""
                cboClassSection.Text = ""
            End If
        Catch ex As Exception
            MsgBox("Update not Successful!", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "ALERT!!!")
            'Making(Adudjstiment)
            db.SubmitChanges()
        End Try
    End Sub]
    

    Спасибо StackOverflow и MSDN за руководство