在数据库进行更改之前检查

时间:2016-06-02 05:54:09

标签: vb.net

我使用datagridview并使用数据集填充它,如下所示:

 Private GetGeschaftDataSet As New DataSet

Public Function GetDataSet() As DataSet Implements IDAL.GetDataSet
        Dim strcon = New AppSettingsReader().GetValue("ConnectionString", GetType(System.String)).ToString()
        Using con As New SqlConnection(strcon)
            Using cmd As New SqlCommand("SELECT * FROM T_Marke", con)
                con.Open()
                ' Create a data adapter in the method and throw it away afterwards
                Using GetProjectsDataAdapter = New SqlDataAdapter(cmd)
                    GetProjectsDataAdapter.Fill(GetGeschaftDataSet, "trial1")
                End Using
            End Using
        End Using
        Return GetGeschaftDataSet
    End Function

当用户结束工作时,我将更改保存到db,如下所示:

 Public Sub MakeChangesDataSet() Implements IDAL.MakeChangesDataSet
        If Not GetGeschaftDataSet.HasChanges Then
            MessageBox.Show("No changes to save", "Informacja", MessageBoxButtons.OK, MessageBoxIcon.Warning)
        Else
            Dim i As Integer
            Try
                Using MyConnection = New SqlConnection(strcon)
                    Using cmd As New SqlCommand("SELECT * FROM T_Marke", MyConnection)
                        MyConnection.Open()
                        ' Create a data adapter in the method and throw it away afterwards
                        Using GetProjectsDataAdapter = New SqlDataAdapter(cmd)
                            Dim cmdbuilder As New SqlCommandBuilder(GetProjectsDataAdapter)
                            i = GetProjectsDataAdapter.Update(GetGeschaftDataSet, "trial1")
                        End Using
                    End Using
                End Using
                MessageBox.Show("Updated" & i & " marke", "Informacja", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End If
    End Sub

但是我想检查是否不重复数据,在这种情况下,如果我的表包含列:Id和Name - 如果用户已经存在已存在的Name,我不想更新。如何实现,或者我应该检查数据网格级别?

1 个答案:

答案 0 :(得分:0)

有一些方法可以做到这一点。

  1. 打开一个连接并选择计算具有该名称的所有行,如果在同一连接中为零则执行插入。

  2. 使用将完成上述所有操作的存储过程。

  3. 在名称列

  4. 上创建唯一索引

    我会使用第三种。