我有一个由数据库表填充的组合框。我有一个添加按钮。在添加按钮用户提示输入唯一名称 我检查这个唯一的名称,如果它存在于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
答案 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))