0

次のコードでデータベースに重複ロールが入力されないようにしたいのですが、役に立たず、gridviewでもこれを防ぐ方法を提案します。

   If txtRollNo.Text.Trim = "" Then
        ErrorProvider1.SetError(txtRollNo, "Roll Number is required")
        Errorcheck = False
      ElseIf varDuplicate = True Then
        MessageBox.Show("Duplicate values are not allowed")
      Else
       ErrorProvider1.SetError(txtRollNo, "")
  End If


    Private Function Duplicate() As Boolean
        Duplicate = True
        duplicatedata = "Select Count(RollNo) from KaiyumVbStudent where RollNO = &txtRollNo.Text.Trim"
        con = New SqlConnection(constring)
        cmd = New SqlCommand(duplicatedata, con)
        con.Open()
        Dim mcount As Integer = cmd.ExecuteScalar
        If mcount > 0 Then
            Duplicate = True
        Else
            Duplicate = False
        End If
    End Function
4

1 に答える 1

0

データベースの列に UNIQUE INDEX を追加しRollNO、例外をキャッチして、値が重複している場合にその例外を処理することをお勧めします。

EDITデータベースベンダーについて言及していないので、SQL SERVERで一意のインデックスを作成する方法は次のとおりですhttp://msdn.microsoft.com/en-us/library/ms187019.aspx

ここに標準SQLがあります

CREATE UNIQUE INDEX index_name ON table_name (column_name)

EDIT 2 UNIQUE INDEX に加えて、UNIQUE CONSTRAINT もhttp://www.w3schools.com/sql/sql_unique.aspで言及されているはずです。OP を混同しないようにするために、UNIQUE INDEX と UNIQUE CONSTRAINT は基本的に同じであり、同じ目標を達成し、パフォーマンスも同じです。技術的には、一意の制約の背後に一意のインデックスがあります。

ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (column_name)
于 2012-09-27T10:26:48.000 に答える