在db中添加唯一值并忽略空间

时间:2014-04-28 05:04:57

标签: sql vb.net

我有一个由数据库表填充的组合框。我有一个添加按钮。在添加按钮用户提示输入唯一名称 我检查这个唯一的名称,如果它存在于db中。如果它不存在我将名称添加到组合框。但问题是db treats" AB"和" A B" 作为不同的名字。我怎么能克服这个问题我不想让用户添加" AB"或" A B"再次,如果一次" AB"已添加。

Public Function CheckGridNames(ByVal gridname As String) As Boolean
    Dim dt As New DataTable
    Try
        Dim connection As New OleDbConnection
        connection.ConnectionString = GetConnectionStringForAdmin()
        connection.Open()
        If (ConnectionState.Open) Then
            Dim objCommand As System.Data.OleDb.OleDbCommand
            objCommand = New System.Data.OleDb.OleDbCommand
            objCommand.CommandText = String.Format("select * from MultiSheetGrid where [GRID_NAME]='{0}'", gridname)
            objCommand.Connection = connection
            Using Adapter As New OleDbDataAdapter(objCommand.CommandText.ToString(), connection.ConnectionString.ToString())
                Adapter.Fill(dt)
            End Using
            connection.Close()

            If (dt.Rows.Count > 0) Then
                Return True
            Else
                Return False
            End If
        End If
    Catch ex As Exception
        MDIEventLog.WriteEntry("DrawingGridDB|ReadGridNames" & ex.Message, Diagnostics.EventLogEntryType.Error)
    End Try
End Function

2 个答案:

答案 0 :(得分:0)

您可以通过在代码中创建一些处理特定业务规则的逻辑来解决这个问题。

一种方法是存储“比较”键 - 例如,如果您不希望在比较键中使用空格,则将值存储到您已剥离空格的列中。 因此,您可以在其中存储AB的“CompareValue”,然后当您想要比较输入A B时,删除空格并与CompareValue进行比较。然后你可以让A B和AB解析为同一个。

其他人使用散列函数返回密钥,然后存储散列而不是字符串值。

但基本上 - 这是业务规则,所以它可能因情况而异。

答案 1 :(得分:0)

试试这个

objCommand.CommandText = String.Format("select * from MultiSheetGrid where ltrim(rtrim(REPLACE([GRID_NAME],' ','')))='{0}'", gridname.Trim().Replace(" ",string.Empty))